Ответ
После отправки манифеста Pod в API-сервер Kubernetes запускается цепочка событий:
- Валидация и запись: API-сервер проверяет манифест и записывает объект Pod в etcd.
- Планирование: Scheduler наблюдает за новыми Pod'ами в состоянии
Pending. Он оценивает требования Pod (ресурсы, nodeSelector, tolerations/taints) и выбирает подходящий узел (Node), после чего обновляет объект Pod в etcd, привязывая его к Node. - Создание на узле: Kubelet на назначенном узле, наблюдая за изменениями, обнаруживает, что ему назначен новый Pod. Он:
- Скачивает образы контейнеров, если их нет локально.
- Через Container Runtime Interface (CRI) (например, containerd или CRI-O) создает контейнеры.
- Монтирует тома (Volumes), указанные в спецификации Pod.
- Запускает контейнер(ы).
- Отслеживание состояния: Kubelet постоянно сообщает о состоянии Pod (фаза
Running,Succeeded,Failed) обратно в API-сервер. - Сетевые настройки: Сетевой плагин контейнерной сети (CNI), такой как Calico или Cilium, настраивает сетевое пространство имен Pod и назначает IP-адрес.
Пример статуса Pod:
kubectl get pod nginx-pod -o wide
# NAME READY STATUS RESTARTS AGE IP NODE
# nginx-pod 1/1 Running 0 10s 10.244.1.5 node-01