Kubernetes — это открытое программное обеспечение для автоматизации развёртывания, масштабирования и управления контейнеризированными приложениями. Поддерживает основные технологии контейнеризации, включая Docker.
Например, у вас может быть две службы: одна будет содержать nginx и mongoDB, а другая — nginx и redis. Каждая служба может иметь IP-адрес или точку обслуживания, к которой могут подключаться другие приложения. Kubernetes необходима для управления этими службами.
На следующей диаграмме в упрощенном формате показано, как Kubernetes работает с точки зрения архитектуры.
Minion — это узел, на котором работают все сервисы. Вы можете иметь множество миньонов, запущенных одновременно. Каждый миньон будет принимать один или несколько POD. Каждый POD похож на хостинг службы. Каждый POD содержит контейнеры Docker. Каждый POD может содержать различный набор контейнеров Docker. Прокси-сервер используется для контроля доступа этих служб к внешнему миру.
Архитектура Kubernetes состоит из нескольких компонентов. Роль каждого компонента объясняется ниже:
- etcd — данный компонент представляет собой высокодоступное хранилище значений ключей, которое используется для хранения общей конфигурации и обнаружения служб. Здесь различные приложения смогут подключаться к сервисам через сервис обнаружения.
- Flannel — это внутренняя сеть, необходимая для контейнеров.
- kube-apiserver — представляет собой API, который может быть использован для организации контейнеров Docker.
- kube-controller-manager — используется для управления услугами Kubernetes.
- kube-scheduler — используется для планирования контейнеров на хостах.
- Kubelet — используется для управления запуском контейнеров через файлы манифеста.
- kube-proxy — используется для предоставления сетевых прокси-служб внешнему миру.
Источник: Docker — Kubernetes Architecture