Kubernetes — ПО для автоматизации развёртывания, масштабирования контейнеризированных приложений и управления ими. Поддерживает основные технологии контейнеризации, включая Docker, rkt, также возможна поддержка технологий аппаратной виртуализации. Рассмотрим основные компоненты Kubernetes:
- API Server — Открывает наружу Kubernetes API. Фронтенд часть Kubernetes контроллера. Называют kube-apisever.
- etcd — Распределенное key-value хранилище для сохранения состояния кластера.
- Scheduler — Планировщик Kubernetes, определяет на каких нодах нужно поднимать поды очередного сервиса или при изменении нагрузки (или проблемах с нодой) перераспределять поды.
- Kube-controller-manager — Контроллер, который отвечает за работоспособность фоновых задач кластера.
- Cloud-controller-manager — Контроллер, отвечающий за взаимодействие с Cloud провайдерами.
-
kubelet — Отвечает за все, что бежит на ноде. Общается с мастер нодой через API Server.
-
kube-proxy — Перераспределяет соединения на корректные поды внутри ноды. Также делает перераспределение нагрузки между подами и сервисами.
-
Container Runtime — Отвечает за работу контейнеров. Загружает образы и запускает контейнеры на ноде. В большинстве случаев будет использоваться Docker, но также возможно использование rkt и других сред, реализующих CRI интерфейс.