С Docker вы можете запустить один экземпляр приложения с помощью простой командой Docker Run. В этом случае для запуска одного приложения Nodejs вы выполняете
docker run nodejs
Это только один экземпляр вашего приложения в одном хосте докера.
Что произойдет, если число пользователей увеличивается и экземпляр больше не сможет обрабатывать нагрузку?
Вы выполняете несколько экземпляров вашего приложения как:
docker run nodejs
docker run nodejs
docker run nodejs
и так далее.
Вы должны иметь близкие посмотреть на нагрузку и производительность вашего приложения и развернуть экземпляры самостоятельно. Также, если в каком-то случае здоровье контейнера в каком-то случае, вы должны найти и заменить его вручную.
Как насчет здоровья самого хозяина? Что если хост вылетает и недоступно?
Контейнер, размещенный на хосте, тоже недоступно.
Что вы будете делать в таком случае, когда существуют сотни и тысячи экземпляров, а также контейнеров, и ваша необходимость контролировать состояние и их здоровье?
Один практический подход может заключаться в том, чтобы сделать скрипты в случае этих действий. Но более практичный подход — использовать Контейнерная оркестровка Отказ
Это коллекция инструментов и сценариев, где мы можем решить масштабируемую проблему с точки зрения здоровья контейнеров, а также состояний. Обычно они содержат несколько хостов докеров, которые проводят контейнеры. Если кто-то не удается, то приложение все еще доступно для других.
Эти оркестографии помогают не только в масштабировании наших приложений вдоль разных хостов, но и в масштабировании хозяев согласно требованию. Мы можем даже настроить сеть между хостами и сообщать об ресурсах и мероприятиях между. С таким функциями, такими как балансировка нагрузки такой оркестовой двигатель сделала наш рабочий процесс действительно проще с другими функциями, такими как совместное хранение и настройка управления и безопасности в кластере.
На рынке доступны несколько решений для оркестрации контейнеров. Некоторые из них: 1.kubernetes 2.mesos 3. dockocker рой
Здесь мы будем сосредоточиться на Кубернаны Отказ
Так что может быть решением нашей проблемы реплики, которая не подходит с докером.
kubectl run --replicas=1000 my-web-server
С помощью простой команды мы можем сделать реплики нашего приложения тысячами единицы.
kubectl scale --replicas=3000 my-web-server
Мы даже можем сделать его автоматическим масштабом со шкалой для 3000 единиц.
Kubernetes также позволяет нам убедиться, что мы обновляем или понижаем по требованию через методы тестирования AB. Также существуют сотни поставщиков для хранения и сетевых приложений из-за его открытой архитектуры. Kubernetes использует Docker Host для размещения приложений в виде контейнеров докеров.
Теперь давайте посмотрим на архитектуру Куберанес.
Узел Это рабочая машина, в которой контейнеры запускаются двигателем Kubernetes.
Кластер это набор узлов, сгруппированных вместе. Это было, даже если один узел не удается, у вас есть приложение все еще доступно из других узлов. У нас есть кластер с этими контейнерами, но как мы можем управлять этими узлами на кластере?
Мастер узел приходит в игру сейчас. Мастер — это узел с плоскостью управления, который помогает контролировать контейнеры в рабочем узле кластера.
При установке Kubernetes в системе вы устанавливаете следующие компоненты.
- API Server
- Etcd.
- Кублет
- Контейнерное время выполнения
- Менеджер контроллера
- Планировщик
- Kube Proxy.
API Server Выступает как интерфейс для кластера Kube. Он помогает в сообщении кластера Kubernetes с пользователями через командную строку, UI etc
Etcd Распределенный надежный магазин Key-Value, используемый Kubernetes для хранения всех данных, которые используются для управления кластером KUBE. Предотвращает множество мастеров от контроля соответствующих узлов.
Планировщик отвечает за распространение работы для контейнеров в нескольких узлах. Он ищет вновь созданные контейнеры и назначает их узлам.
Менеджеры контроллера Похоже, что мозг оркестровки, поскольку они сообщают всякий раз, когда конечная точка, контейнер, узел и т. Д. Контроллер принимает решение о создании новых контейнеров в таких случаях.
Контейнерное время выполнения (Двигатель, как Docker) Базовое программное обеспечение, которое используется для запуска контейнеров. В нашем случае, что происходит докер.
Кублет это агент, который проходит в каждом узле в кластере. Эти агенты работают, чтобы убедиться, что контейнеры работают, как и ожидалось в данных узлах.
Kube Proxy Запускается на каждом узле, который может прокси UDP, TCP и SCTP.It не понимают http.it помогает в предоставлении балансировки нагрузки.
Наконец Kubectl Это утилита командной строки для среды оркестографии Kubernetes, через которую пользователь управляет Kubernetes.
Таким образом, архитектура компонента Kubernetes работает.
Использованная литература:
https://assets.digitalocean.com/books/kubernetes-for-full-stack-developers.pdf https://iamondemand.com/wp-content/uploads/2019/11/kubernetes-ebook.pdf https://www.cncf.io/wp-content/uploads/2020/08/getting-started-with-containers-and-kubernetes_-march-2020-cncf-webinar.pdf https://www.youtube.com/watch?v=8C_SCDBUJTG https://www.katacoda.com/courses/kubernetes https://nebula-graph.io/posts/how-to-deploy-nebula-graph-in-kubernetes/ . https://cdn.yongbok.net/ruo91/architecture/k8s/v1.1/kubernetes_architecture.png
Оригинал: «https://dev.to/chauchausoup/kubernetes-component-architecture-2b7p»