Источник изображения: Платформа9
С Docker вы можете запустить один экземпляр приложения с помощью простой команды Docker Run. В этом случае, чтобы запустить приложение на основе Node JS, вы запускаете команду Docker Run Nodejs. Но это всего лишь один экземпляр вашего приложения на одном хосте Docker. Что происходит, когда число пользователей увеличивается, и этот экземпляр больше не может обрабатывать нагрузку, вы развертываете дополнительный экземпляр вашего приложения, запустив команду Docker Run несколько раз. Так что это то, что вам нужно сделать сами, вы должны внимательно следить за нагрузкой и производительности вашего приложения и самостоятельно развернуть дополнительные экземпляры. И не только это, вы должны внимательно следить за здоровьем этих приложений.
Контейнерная оркестровая
И если контейнер должен был пройти в удалении, вы сможете обнаружить это и снова запустить команду Docker Run, чтобы развернуть другой экземпляр этого приложения. Как насчет здоровья самого хозяина Docker? Что, если хост вылетел и недоступен?
Контейнеры, размещенные на этом хосте, становятся недоступными. Итак, что вы делаете, чтобы решить эти проблемы, вам понадобится специальный инженер, который может сидеть и контролировать производительность состояния и здоровье контейнеров и предпринять необходимые действия для исправления ситуации. Но когда у вас есть большие приложения, развернутые с 10 -х тысяч контейнеров, это не практичный подход. Таким образом, вы можете построить свои собственные сценарии, и это поможет вам в некоторой степени решить эти проблемы. Контейнерная оркестровая — это просто решение для этого. Это решение, которое состоит из набора инструментов и сценариев, которые могут помочь в вашей производственной среде в вашей производственной среде.
Как правило, решение для оркестровки контейнера состоит из нескольких хостов Docker, которые могут размещать контейнеры. Таким образом, даже если кто -то терпит неудачу, приложение все еще доступно через другие. Решение оркестровки контейнера легко позволяет развернуть сотни или тысячи экземпляров вашего приложения с помощью одной команды.
Некоторые решения для оркестровки могут помочь вам автоматически увеличить количество экземпляров, когда пользователи увеличиваются и уменьшают количество экземпляров, когда спрос уменьшается. Некоторые решения могут даже помочь вам в автоматическом добавлении дополнительных хостов для поддержки загрузки пользователя. И, не просто кластеризация и масштабирование, решения для оркестровки контейнеров также обеспечивают поддержку передовых сетей между этими контейнерами на разных хостах. А также нагрузку запросов пользователей на разных хостах. Они также обеспечивают поддержку для обмена хранением между хостом, а также поддержку управления конфигурацией и безопасности в кластере.
Решения оркестровки
Сегодня доступно несколько решений для оркестровки контейнеров — Docker имеет Docker Swarm, Kubernetes из Google и Mesos от Apache. Ну, Docker Swarm действительно легко настроить и начать. У него не хватает некоторых передовых функций автоматического масштаба, необходимых для сложных применений производства. Мезо, с другой стороны, довольно сложно настроить и начать, но поддерживает множество расширенных функций.
Kubernetes, возможно, самый популярный из всех, немного сложно настроить и начать, но предоставляет множество вариантов для настройки развертываний и поддерживает многих различных поставщиков. Kubernetes теперь поддерживается всем поставщикам общественных облаков, таких как GCP, Azure и AWS, а проект Kubernetes является одним из самых высоких проектов на Github. С Docker вы смогли запустить один экземпляр приложения, используя Docker CLI, запустив команду Docker Run, что великолепно, запуск и приложение никогда не было так проще раньше. С Kubernetes. Используя CLI Kubernetes, известный как Kubectl, вы можете запустить 1000 экземпляров того же приложения с помощью одной команды.
Kubernetes может масштабировать его до 2000 года с другой командой, Kubernetes может быть даже настроен для автоматического выполнения, чтобы экземпляры и сама инфраструктура могли масштабироваться вверх и вниз на основе нагрузки пользователя. Kubernetes может обновить эти 2000 экземпляров приложения в стиле обновления, по одному за раз с одной командой. Если что -то пойдет не так, это может помочь вам откатить эти изображения с помощью одной команды. Kubernetes может помочь вам проверить новые функции вашего приложения, только обновив процент этих случаев с помощью методов тестирования AB.
Открытая архитектура Kubernetes обеспечивает поддержку многих различных поставщиков сети и хранилища. Любая сеть или бренд хранения, о котором вы можете подумать, имеет плагин для Kubernetes. Kubernetes поддерживает различные механизмы аутентификации и авторизации. Все основные поставщики облачных услуг имеют собственную поддержку Kubernetes.
Связь между Docker и Kubernetes
Kubernetes использует хост Docker для размещения приложений в виде контейнеров Docker. Ну, это не должно быть докером все время. Kubernetes поддерживает как родные для Dockers, таких как ракета или Crier, но давайте быстро рассмотрим архитектуру Kubernetes. Кластер Kubernetes состоит из набора узлов. Давайте начнем с узлов. Узел — это машина физического или виртуального, на котором установлены инструменты настройки программного обеспечения Kubernetes. А узел — это рабочая машина, и именно здесь Kubernetes будет запущена контейнеры. Но что, если узел, на котором работает приложение, не удается. Ну, очевидно, наше приложение падает. Таким образом, вам нужно иметь более одного узла.
Кластер — это набор узлов, сгруппированных вместе. Таким образом, даже если один узел не удается, у вас есть приложение, которое все еще доступно из других узлов. Теперь у нас есть кластер, но кто отвечает за управление этим кластером? Где хранится информация о членах кластера? Как отслеживаются узлы? Когда узел терпит неудачу? Как перемещать рабочую нагрузку неудавшихся узлов в другой узел работника? Вот где входит мастер. Мастер — это узел с установленными компонентами плоскости управления Kubernetes.
Мастер наблюдает за узлами в кластере и несет ответственность за фактическую оркестровку контейнеров на рабочих узлах.
Когда вы устанавливаете Kubernetes в систему, вы фактически устанавливаете следующие компоненты, сервер API и т. Д.
Сервер API действует как передний конец для Kubernetes. Пользователи, устройства управления, интерфейсы командной строки, все общаются с сервером API, чтобы взаимодействовать с кластером Kubernetes. Следующим является магазин ключевых значений ETCD. ETCD представляет собой распределенное надежное хранилище ключей, используемое Kubernetes для хранения всех данных, используемых для управления кластером. Подумайте об этом так, когда у вас есть несколько узлов и несколько мастеров в вашем кластере. ETCD хранит всю эту информацию обо всех узлах в кластере распределенным образом. ETCD отвечает за внедрение журналов в кластере, чтобы убедиться, что между мастерами нет конфликтов.
Планировщик отвечает за распространение работы или контейнеров по нескольким узлам. Он ищет недавно созданные контейнеры и назначает их узлам. Контроллеры — это мозг позади оркестровки, они несут ответственность за замечение и реагирование, когда узлы контейнеры или конечные точки снижаются. Контроллеры принимают решения для создания новых контейнеров в таких случаях. Время выполнения контейнера — это базовое программное обеспечение, которое используется для запуска контейнеров, в нашем случае это Docker. И, наконец, Кубелет — это агент, который работает на каждом узле в кластере. Агент отвечает за то, чтобы контейнеры работали на узлах, как и ожидалось.
И, наконец, нам также нужно немного узнать о одной из утилит командных линий, известных как инструмент командной строки Kube, инструмент управления Kube или объятие Kube, так как он также называется инструментом управления Kube-это CLI Kubernetes, который является Используется для развертывания и управления приложениями в кластере Kubernetes для получения информации, связанной с кластером, для получения состояния узлов в кластере и многих других вещей. Команда kubectl Run используется для развертывания приложения в кластере, команда Info Clans Cluster Kube используется для просмотра информации о кластере. И команда Kubectl Get Nodes используется для перечисления всех узлов часть кластера. Таким образом, чтобы запустить сотни экземпляров вашего приложения в сотнях узлов, все, что мне нужно, это такая команда Kubernetes, как это.
Ну, это все, что у нас есть сейчас. Быстрое введение в Kubernetes и его архитектуру. В настоящее время у нас есть четыре курса на Kodekloud на Kubernetes. Это приведет вас к абсолютному новичку к сертифицированному эксперту. Так что посмотрите на это.
Kubernetes для абсолютных начинающих
Сертифицированный администратор Kubernetes (CKA)
Kubernetes — абсолютный новичок эксперту
Сертифицированный разработчик приложений Kubernetes (CKAD)
Оригинал: «https://dev.to/kodekloud/kubernetes-concepts-explained-for-developers-22p»