Что происходит после kubectl apply
Вопрос
Расскажи по шагам, что происходит в кластере после kubectl apply -f deployment.yaml до работающего контейнера.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
kubectl отправляет объект в API server; аутентификация, авторизация RBAC, admission (мутации и валидация), запись в etcd
Контроллер Deployment создаёт ReplicaSet, контроллер ReplicaSet создаёт Pod без узла
Scheduler фильтрует и ранжирует узлы, записывает `nodeName`
kubelet выбранного узла видит под через watch, скачивает образ, запускает контейнеры через CRI, CNI выдаёт IP, монтируются тома
kubelet обновляет статус; после readiness probe под попадает в EndpointSlice сервиса и получает трафик
Все общаются только через API server и watch, напрямую друг друга не вызывают
Что могут спросить следом
- Где здесь может застрять под и как это увидеть?
- Что такое admission webhook?
- Как Deployment делает rolling update?
Разбор
kubectl отправляет манифест в API server. Тот проверяет, кто я (аутентификация), можно ли мне это (RBAC), прогоняет admission-контроллеры, которые могут дополнить объект и проверить политики, и сохраняет его в etcd. Контроллер Deployment через watch видит новый объект и создаёт ReplicaSet с хешем шаблона. Контроллер ReplicaSet видит, что подов меньше, чем нужно, и создаёт объекты Pod, пока без узла. Scheduler замечает поды без nodeName, отбрасывает узлы без ресурсов или с неподходящими taints и affinity, ранжирует остальные и привязывает под к узлу. kubelet на этом узле получает под, через CRI просит containerd скачать образ и запустить контейнеры, CNI выдаёт поду IP, монтируются тома, стартуют init-контейнеры, затем основные. kubelet выполняет probes и пишет статус. Когда readiness probe проходит, контроллер EndpointSlice добавляет IP пода в сервис, и kube-proxy начинает слать на него трафик. Застрять можно на каждом шаге: Pending у scheduler, ImagePullBackOff у kubelet, CrashLoopBackOff у самого приложения, всё это видно в kubectl describe и events.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.