← Kubernetes
Kubernetes

Архитектура Kubernetes: основные компоненты

Архитектура Kubernetes: основные компоненты

Общая схема Kubernetes-кластер состоит из двух основных частей: 1)Control Plane 2)Worker Nodes

Официально кластер Kubernetes включает control plane и одну или несколько worker-nod, на которых запускаются приложения. 

Описание основных компонентов: 

  • Control plane 

    Управляет кластером и принимает решения: где запустить Pod, сколько реплик должно работать и что делать при сбое. 

  • kube-apiserver

    Главная точка взаимодействия с Kubernetes API. Через него работают: - kubectl - пользователи и администраторы - другие компоненты Kubernetes - внешние приложения и автоматизация

  • etcd 

    Распределённое key-value хранилище. В нём сохраняется состояние кластера: - Nodes - Pods - Deployments - Services - ConfigMaps - Secrets - настройки и метаданные Kubernetes Если etcd потерян, control plane может потерять информацию о состоянии кластера. 

  • kube-scheduler

    Выбирает Node, на которой будет запущен новый Pod. При выборе учитываются: - доступные CPU и RAM - требования Pod - ограничения и affinity - taints и tolerations - состояние Node Сам scheduler не запускает контейнер — он только назначает Pod подходящей Node. 

  • kube-controller-manager 

    Запускает контроллеры, которые постоянно сравнивают желаемое состояние с фактическим и исправляют отклонения. Например: - Deployment должен иметь 3 Pod’а - один Pod завершился - controller создаёт новый Pod. Контроллеры работают как цикл наблюдения и приведения текущего состояния к желаемому. 

  • cloud-controller-manager 

    Необязательный компонент для облачных сред. Он связывает Kubernetes с облачным провайдером и может управлять: - облачными Node - балансировщиками - дисками - маршрутами сети. 

  • Worker Node 

    Сервер, на котором реально выполняются Pod’ы и контейнеры. 

  • kubelet 

    Агент Kubernetes на каждой Node - получает описание Pod’ов, запускает контейнеры через container runtime, следит за их состоянием, выполняет health checks, сообщает control plane состояние Node и Pod’ов. Коротко: kubelet следит, чтобы нужные контейнеры действительно работали. 

  • kube-proxy 

    Отвечает за сетевые правила для Kubernetes Service. Он помогает направлять трафик от Service к нужным Pod’ам. В современных кластерах его функции могут частично заменяться другими сетевыми решениями, но классически kube-proxy считается компонентом Node.

  • Container Runtime

    Компонент, который непосредственно запускает контейнеры. Примеры: - containerd - CRI-O Kubernetes взаимодействует с runtime через интерфейс CRI. Docker Engine напрямую обычно не используется как runtime в современных Kubernetes-кластерах.