Деплой и инфра
K8s objects: тест с выбором ответа
Шесть вопросов, проходящих через весь юнит. Каждый — это решение, которое вы принимаете при написании манифеста или разборе сломанного раската: не определение для заучивания, а сценарий отказа, который нужно разобрать в продакшен-условиях.
Проверьте, что вы связываете воедино reconciliation loop, иерархию Pod→ReplicaSet→Deployment, селекторы Service, семантику probes, поведение ConfigMap/Secret и requests против limits — синтез, к которому вёл урок.
Узел перезагружается и уносит с собой 3 из 5 подов Deployment. Никто не запускает никаких команд. Что восстанавливает количество и каков механизм?
Джуниор запускает kubectl run debug --image=busybox для разового пода, и тот работает днями. Почему это всё равно неверно для всего, что должно оставаться поднятым?
Deployment задаёт selector app=web, и Service тоже выбирает app=web. Позже создаётся второй Deployment, чьи поды тоже несут app=web. Что происходит с трафиком?
Приложению нужно ~25с на прогрев (загрузка config + прогрев пула) до готовности обслуживать, и спустя часы оно иногда зависает. Команда добавляет только это: ```yaml livenessProbe: httpGet: { path: /healthz, port: 8080 } initialDelaySeconds: 30 ``` Раскаты всё ещё дают всплески 500. Почему и чего не хватает?
Вы обновляете ConfigMap, потребляемый как env-переменные работающим Deployment: ```yaml envFrom: - configMapRef: { name: app-config } ``` Новое значение не доходит до подов даже спустя часы. Корневая причина и стандартное исправление?
Чувствительный к задержкам сервис задаёт: ```yaml resources: requests: { cpu: 250m, memory: 256Mi } limits: { cpu: 500m, memory: 256Mi } ``` Под нагрузкой видны периодические всплески задержек и редкий OOMKill. Каковы два разных механизма и какая ручка опаснее?
Сквозная линия юнита — одна модель: вы объявляете desired state, и контроллеры вечно reconcile actual к нему — поэтому Deployment самовосстанавливается, а голый Pod нет. Иерархия добавляет по одной задаче на слой (Pod гоняет контейнеры, ReplicaSet держит count, Deployment катит и откатывает), Service выбирают поды по метке в набор Endpoints без понятия о владении, probes делятся на readiness (гейтит трафик) и liveness (перезапускает), изменения ConfigMap/Secret никогда не катят автоматически, а ресурсы делятся на CPU (троттлится, сжимаем) и память (OOMKill, несжимаема). Каждый продакшен-отказ здесь сводится к одной из этих семантик.