Общее

Kubernetes - открытая система оркестрации контейнеров для их управления и запуска в кластере.

Выполнение, управление и масштабирование контейнеров происходит в кластере Kubernetes. Запущенный кластер состоит из мастера(мастеров) и группы нод (воркеров).

Мастер - виртуальная машина, которая отвечает за управление кластером при помощи таких компонентов как:

  • ETCD - распределенное хранилище типа ключ-значение. Оно используется для хранения конфигураций и информации о всех ресурсах кластера. Например о состоянии Pod, Service, Node.

  • Kube-apiserver - интерфейс, через который происходит взаимодействие всех компонентов кластера с БД по созданию, обновлению, удалению пользовательских объектов.

  • Scheduler - назначает запуск подов на нодах. При выборе подходящей ноды для запуска учитывает множество факторов, таких как количество свободных ресурсов на ноде и запросы на ресурсы планируемого для запуска подов.

  • Controller Manager - запускает внутри себя множество контроллеров. Они используют API сервер, чтобы отслеживать общее состояние кластера и вносить верные изменения в его текущее состояние.

  • Cloud-controller-manager - аналогично запускает множество контроллеров, но они связаны с взаимодействием с платформой. Например cluster autoscaler, LoadBalancer controller, PVC controller и прочее.

  • Csi-controller - отвечает за управление persistent volumes. Он посылает команды платформе на создание PersistentVolumes.

  • Csi-attacher - следит за тем, куда нужно подключить тот или иной том данных и сообщает об этом csi-controller'у.

  • Csi-provisioner - следит за созданием и удалением PVC и при необходимости сообщает csi-controller'у о необходимости создать/удалить том.

Нода (воркер) - виртуальная машина, которая отвечает за управление контейнерами. Каждая нода в сервисе объединена в группу нод и состоит из таких компонентов как:

  • Kubelet - это агент, который запускается на каждой ноде и отвечает за создание подов и запуска в них контейнеров. Так же отвечает за монтирование томов данных.

  • Kube-proxy - создаёт правила в iptables и ipvs - необходимые для балансировки сетевых соединений (реализует функционал service)  и нормальной работы сети.

  • Cri-o - container runtime, который непосредственно запускает контейнеры.

Зональный кластер - создается только в одной из доступных зон.

Дополнительные решения

  • CoreDNS - DNS сервер для кластера Kubernetes

  • Calico - software-defined network, которая работает на 3 сетевом уровне, для маршрутизации сетевого трафика использует BGP.

  • Ingress-controller - контроллер, реализующий функционал Ingress ресурсов с правилами, в которых описывается как входящие http подключения могут достигнуть сервисов (Services) приложений.


Средняя оценка: 5,0, всего оценок: 1