Что происходит после запуска pod в Kubernetes?

«Что происходит после запуска pod в Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

После отправки манифеста Pod в API-сервер Kubernetes запускается цепочка событий:

  1. Валидация и запись: API-сервер проверяет манифест и записывает объект Pod в etcd.
  2. Планирование: Scheduler наблюдает за новыми Pod'ами в состоянии Pending. Он оценивает требования Pod (ресурсы, nodeSelector, tolerations/taints) и выбирает подходящий узел (Node), после чего обновляет объект Pod в etcd, привязывая его к Node.
  3. Создание на узле: Kubelet на назначенном узле, наблюдая за изменениями, обнаруживает, что ему назначен новый Pod. Он:
    • Скачивает образы контейнеров, если их нет локально.
    • Через Container Runtime Interface (CRI) (например, containerd или CRI-O) создает контейнеры.
    • Монтирует тома (Volumes), указанные в спецификации Pod.
    • Запускает контейнер(ы).
  4. Отслеживание состояния: Kubelet постоянно сообщает о состоянии Pod (фаза Running, Succeeded, Failed) обратно в API-сервер.
  5. Сетевые настройки: Сетевой плагин контейнерной сети (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