Вопросы на собеседовании: Kubernetes-инженер
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Junior.
Смотреть пример резюме: Kubernetes-инженер →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Kubernetes является платформой управления контейнерными workloads, которая поддерживает объявленное состояние приложений в кластере.
- Он планирует workloads на доступные узлы вместо ручного размещения.
- Controllers заменяют отказавшие экземпляры и согласуют фактическое состояние с желаемым.
- Services предоставляют стабильный доступ, пока Pods могут создаваться и удаляться.
- Kubernetes даёт примитивы оркестрации, но код приложения и container images остаются ответственностью пользователя.
Зачем это спрашивают: Интервьюер проверяет понимание Kubernetes как декларативной системы оркестрации контейнеров, а не container runtime.
Kubernetes-кластер является группой компонентов control plane и worker nodes, которые совместно запускают workloads и управляют ими.
- Control plane хранит желаемое состояние и принимает решения для всего кластера.
- Worker nodes предоставляют CPU, память, сеть и storage для Pods.
- Компоненты общаются через Kubernetes API, а не работают одним процессом.
- Кластер может содержать один или много узлов в зависимости от назначения и требований доступности.
Зачем это спрашивают: Сильный ответ называет control plane, worker nodes и координацию через API основой структуры кластера.
Контейнеры изолируют процессы и используют общее ядро хоста, а виртуальные машины включают гостевую ОС на виртуализированном оборудовании.
- Container image упаковывает приложение и его user-space зависимости без отдельного ядра.
- Виртуальные машины обычно дают более сильную границу изоляции, но требуют больше ресурсов и запускаются дольше.
- Несколько контейнеров могут работать на одном узле через container runtime.
- Kubernetes планирует контейнеры внутри Pods и не заменяет операционную систему узла.
Зачем это спрашивают: Интервьюер оценивает понимание модели изоляции и ресурсов, на которой строится Kubernetes.
Pod является наименьшей развёртываемой единицей Kubernetes и содержит один или несколько тесно связанных контейнеров.
- Контейнеры Pod вместе планируются на один узел.
- Они разделяют сетевой namespace Pod, IP-адрес и localhost.
- Они могут совместно использовать volumes, объявленные в спецификации Pod.
- Pods являются расходными объектами, поэтому обычно их создают и заменяют высокоуровневые controllers.
Зачем это спрашивают: Интервьюер проверяет понимание Pod как границы планирования и общих ресурсов.
Pod может объединять контейнеры, которым нужно разделять lifecycle, сеть и storage как одной единице приложения.
- Основной контейнер может запускать приложение, а helper выполнять тесно связанную вспомогательную функцию.
- Контейнеры общаются через localhost, потому что разделяют один network namespace.
- Общие volumes позволяют одному контейнеру создавать файлы для другого.
- Несвязанные сервисы обычно должны находиться в отдельных Pods, чтобы независимо масштабироваться и обновляться.
Зачем это спрашивают: Сильный ответ объясняет multi-container Pods тесной связанностью и понимает, когда нужны отдельные Pods.
Каждый Pod обычно получает собственный cluster IP address, общий для всех его контейнеров.
- Контейнеры внутри Pod общаются через localhost и разные порты.
- Другие Pods обращаются по Pod IP, если это разрешает сеть кластера.
- Pod IP нестабилен при замене, поэтому клиенты обычно используют Service.
- Сетевая модель Kubernetes предполагает маршрутизацию Pod IP между узлами без port mapping на уровне приложения.
Зачем это спрашивают: Интервьюер проверяет базовое понимание сети Pod и причины отдельного стабильного service discovery.
Фаза Pod является общим описанием его жизненного цикла: Pending, Running, Succeeded, Failed или Unknown.
- Pending означает, что Kubernetes принял Pod, но один или несколько контейнеров ещё не готовы к запуску.
- Running означает, что Pod привязан к узлу и хотя бы один контейнер работает, запускается или перезапускается.
- Succeeded и Failed означают завершение всех контейнеров с успехом или хотя бы одной ошибкой соответственно.
- Фаза шире состояния контейнера и не равна условию Ready.
Зачем это спрашивают: Интервьюер оценивает, различает ли кандидат фазу lifecycle Pod, состояние контейнера и readiness.
restartPolicy сообщает kubelet, когда перезапускать завершившиеся application containers в том же Pod.
- Always перезапускает завершившийся контейнер независимо от результата выхода.
- OnFailure перезапускает только контейнеры, завершившиеся с ошибкой.
- Never оставляет завершившийся контейнер остановленным.
- Политика применяется к application containers в Pod и не пересоздаёт Pod на другом узле.
Зачем это спрашивают: Сильный ответ объясняет перезапуск контейнера и не путает его с заменой Pod контроллером.
Init container выполняется до успешного завершения перед запуском обычных application containers Pod.
- Несколько init containers выполняются последовательно в указанном порядке.
- Каждый должен завершиться успешно до запуска следующего init container или application container.
- Init containers могут использовать отдельные images, commands, security settings и общие volumes.
- Они подходят для предварительной настройки без помещения этой логики в основной application image.
Зачем это спрашивают: Интервьюер проверяет понимание порядка init containers и их отличия от долгоживущих application containers.
Sidecar является вспомогательным контейнером, работающим рядом с основным application container в одном Pod.
- Он разделяет сеть Pod и может использовать общие с приложением volumes.
- Типичные роли включают proxying, сбор телеметрии или адаптацию файлов для основного процесса.
- Sidecar тесно связан с lifecycle Pod, а не развёртывается и масштабируется как независимый сервис.
- Sidecar увеличивает потребление ресурсов и операционную поверхность Pod, поэтому связанность должна быть осознанной.
Зачем это спрашивают: Сильный ответ определяет sidecar через общий lifecycle и ресурсы, а не через один конкретный инструмент.
Deployment декларативно управляет набором реплицированных application Pods и их обновлениями.
- Его Pod template описывает контейнеры и metadata для новых Pods.
- Поле replicas задаёт число существующих matching Pods.
- Deployment создаёт ReplicaSets и управляет ими, а не владеет Pods напрямую.
- Он предназначен для stateless workloads, Pods которых можно заменить из одного template.
Зачем это спрашивают: Интервьюер проверяет понимание Deployment как высокоуровневого controller для реплицированных Pods.
ReplicaSet является controller, который поддерживает заданное число matching Pod replicas.
- Он использует label selector для определения управляемых Pods.
- Если matching Pods слишком мало, он создаёт новые из Pod template.
- Если matching Pods слишком много, он удаляет лишние.
- Пользователи обычно управляют ReplicaSets через Deployments, добавляющие обновления и revisions.
Зачем это спрашивают: Сильный ответ объясняет reconciliation ReplicaSet и его связь с Deployment.
Deployment управляет ReplicaSets, а каждый ReplicaSet поддерживает Pods, созданные из одной revision template.
- Изменение Pod template Deployment приводит к созданию нового ReplicaSet.
- Новый и старый ReplicaSets меняют число replicas согласно стратегии обновления.
- Pods получают owner references, связывающие их с ReplicaSet.
- Такое многоуровневое владение позволяет Kubernetes сохранять желаемое число replicas при замене версии workload.
Зачем это спрашивают: Интервьюер оценивает понимание иерархии controllers за обычным application workload.
Поле replicas объявляет желаемое число доступных экземпляров Pod для workload Deployment.
- Deployment и его ReplicaSet постоянно сравнивают желаемое и наблюдаемое количество.
- Отсутствующий Pod заменяется, чтобы число вернулось к объявленному значению.
- Несколько replicas могут распределять application traffic между отдельными экземплярами Pod.
- Replicas дублируют Pod template, но автоматически не делят данные приложения.
Зачем это спрашивают: Интервьюер проверяет понимание желаемого числа replicas и отсутствие путаницы между репликацией и шардингом данных.
Reconciliation является повторяющимся процессом приближения фактического состояния кластера к желаемому состоянию из API.
- Controller наблюдает ресурсы, относящиеся к управляемому им состоянию.
- Он сравнивает объявленную спецификацию с текущими объектами или условиями.
- При различии состояний он создаёт, обновляет или удаляет ресурсы.
- Цикл повторяется, поэтому Kubernetes может исправлять последующий drift, а не выполнять одноразовый скрипт.
Зачем это спрашивают: Сильный ответ называет control-loop model, лежащую в основе Deployments, ReplicaSets и других ресурсов Kubernetes.
Labels являются key-value metadata для идентификации и группировки объектов.
- Они могут описывать application, component, environment или version.
- Selectors используют labels для поиска наборов объектов без опоры на имена.
- Services и workload controllers зависят от точных labels для соединения связанных ресурсов.
- Labels предназначены для идентификации, а большой описательный текст следует хранить в annotations.
Зачем это спрашивают: Интервьюер проверяет понимание labels как операционной идентичности, используемой selectors.
Label selector является запросом, сопоставляющим Kubernetes-объекты по их labels.
- Equality selectors соответствуют выражениям вроде app=web или tier!=frontend.
- Set-based selectors выражают принадлежность через операторы In, NotIn и Exists.
- Selector Service определяет, какие Pods становятся его backends.
- Selector controller должен соответствовать labels в его Pod template, чтобы управлять нужными Pods.
Зачем это спрашивают: Сильный ответ объясняет формы selectors и их конкретную роль в соединении controllers и Services с Pods.
Annotations хранят неидентифицирующие metadata, а labels предназначены для выбора и группировки объектов.
- Annotations могут содержать конфигурацию инструментов, ownership links, checksums или описательные детали.
- Selectors не могут запрашивать annotations.
- Значения annotation могут хранить более крупный и менее структурированный текст, чем labels.
- Metadata для определения членства в Service или controller должны находиться в labels, а не annotations.
Зачем это спрашивают: Интервьюер оценивает, умеет ли кандидат выбирать правильный механизм metadata для selection и описательной информации.
Namespace создаёт логическую область для многих namespaced resources внутри одного кластера.
- Pods, Deployments, Services, ConfigMaps и Secrets обычно принадлежат Namespace.
- Одинаковое имя ресурса может существовать в разных Namespaces.
- RBAC rules, quotas и policies можно применять по Namespace.
- Namespaces организуют и ограничивают scope ресурсов, но автоматически не являются полной security boundary.
Зачем это спрашивают: Сильный ответ охватывает scope имён и политик, не преувеличивая изоляцию Namespace.
Namespaced resources принадлежат одному Namespace, а cluster-scoped resources существуют для всего кластера.
- Pods, Deployments, Services, ConfigMaps, Secrets и PersistentVolumeClaims являются namespaced.
- Nodes, Namespaces, PersistentVolumes и многие cluster-level RBAC objects являются cluster-scoped.
- Имя namespaced resource должно быть уникальным только внутри его Namespace.
- kubectl использует выбранный Namespace для namespaced resources, но не добавляет его cluster-scoped resources.
Зачем это спрашивают: Интервьюер проверяет понимание scope ресурсов и его влияния на имена и команды kubectl.
Закрытые вопросы
- 21
Что такое Service в Kubernetes?
kubernetes - 22
Что такое Service типа ClusterIP?
cluster - 23
Что такое Service типа NodePort?
- 24
Что такое Service типа LoadBalancer?
- 25
Чем отличаются Services ClusterIP, NodePort и LoadBalancer?
cluster - 26
Что такое headless Service?
- 27
Как Kubernetes DNS поддерживает Service discovery?
dnskubernetes - 28
Что такое control plane Kubernetes?
control-planekubernetes - 29
Что делает kube-apiserver?
- 30
Для чего Kubernetes использует etcd?
control-planekubernetes - 31
Что делает kube-scheduler?
scheduling - 32
Что делает kube-controller-manager?
- 33
Что такое Node в Kubernetes?
kubernetes - 34
Что делает kubelet на worker node?
control-plane - 35
Какую роль kube-proxy играет в сети Kubernetes?
proxykubernetes - 36
Что такое container runtime в Kubernetes?
kubernetescontainers - 37
Что такое YAML-манифест Kubernetes?
kubernetesyaml - 38
Что означают apiVersion, kind, metadata, spec и status в объекте Kubernetes?
kubernetes - 39
Для чего используются kubectl get, describe и logs?
kuberneteskubectl - 40
Чем kubectl create отличается от kubectl apply?
kuberneteskubectl - 41
Для чего нужны kubectl contexts и Namespaces?
kuberneteskubectlnamespaces - 42
Что такое ConfigMap?
configkubernetesconfiguration - 43
Что такое Kubernetes Secret?
configurationkubernetessecrets - 44
Как Pod может получить значения из ConfigMap или Secret?
workloadsconfigurationconfig - 45
Что такое volume в Kubernetes Pod?
workloadskubernetes - 46
Что такое volume emptyDir?
- 47
Что такое PersistentVolume и PersistentVolumeClaim?
- 48
Что такое resource requests и limits контейнера?
containers - 49
Чем отличаются liveness, readiness и startup probes?
health-checks - 50
Что происходит при штатном завершении Pod?
workloads - 51
Как задеплоить stateless-приложение в контейнере в Kubernetes?
kubernetescontainersdeployment - 52
Что нужно проверить перед применением нового Kubernetes-манифеста?
kubernetes - 53
Вы применили Deployment, но не находите его поды; как будете разбираться?
workloadsdeployment - 54
ConfigMap изменился, но существующие поды используют старую конфигурацию; что делать?
configkubernetesconfiguration - 55
Как установить приложение из Helm chart с настройками конкретного окружения?
helm - 56
Как использовать Kustomize overlay для деплоя одного приложения в staging и production?
deploymentkuberneteskustomize - 57
Argo CD показывает приложение в состоянии OutOfSync; как действовать?
gitops - 58
Как выглядит ваш первый проход диагностики нездорового пода?
workloads - 59
Под находится в CrashLoopBackOff; как вы будете его отлаживать?
workloadstroubleshooting - 60
Контейнер сразу завершается с кодом 1 и не оставляет полезных logs; что проверить дальше?
containers - 61
Под перезапускается из-за ошибки liveness probe; как это исправить?
workloadshealth-checks - 62
Как диагностировать ImagePullBackOff для публичного образа?
- 63
Загрузка образа из приватного registry завершается unauthorized; что проверить?
registries - 64
Под остаётся в Pending; как найти причину?
workloads - 65
Под находится в Pending, потому что ни на одном node не хватает CPU под его request; что делать?
workloads - 66
Под находится в Pending из-за unbound PersistentVolumeClaim; как разбираться?
workloads - 67
Контейнер был завершён как OOMKilled; как вы отреагируете?
containers - 68
Контейнер работает медленно, а использование CPU постоянно упирается в limit; что проверить?
containers - 69
Под находится в Running, но никогда не становится Ready; как его диагностировать?
workloads - 70
Поды Ready, но у Service нет endpoints; что проверить?
endpoints - 71
Как получить правильные logs пода с несколькими контейнерами и перезапусками?
containersworkloads - 72
Если kubectl logs недостаточно, что искать в kubectl describe?
kuberneteskubectl - 73
В минимальном контейнере нет shell, но нужно исследовать его network namespace; что делать?
containerskubernetesnamespaces - 74
Как подтвердить, какую конфигурацию Kubernetes фактически применил к Deployment?
kubernetesdeploymentconfig - 75
Как использовать Kubernetes events при диагностике?
kubernetes - 76
Имя Service разрешается, но соединение отклоняется; как сузить проблему?
- 77
Как сделать внутреннее приложение доступным другим workloads в кластере?
cluster - 78
Как открыть HTTP-приложение для доступа извне кластера?
clusterhttp - 79
Service отправляет трафик не на тот порт приложения; что исправить?
- 80
Под не может разрешить имя Service; как проверить DNS?
dnsworkloads - 81
Соединение перестало работать после применения Cilium network policy; как провести диагностику?
network-policiesnetworking - 82
Как вручную масштабировать Deployment и проверить результат?
workloadsdeployment - 83
Что подготовить перед включением HorizontalPodAutoscaler по CPU?
scaling - 84
Вы масштабировали Deployment через kubectl, но Argo CD вернул прежнее число; что делать?
deploymentkubernetesgitops - 85
Как наблюдать за rolling update Deployment?
deploymentmonitoringworkloads - 86
Как выбрать maxSurge и maxUnavailable для обычного rolling update?
deployment-strategies - 87
Новый образ сломал rolling update; как восстановиться?
deployment-strategies - 88
Как проверить историю и откатить Deployment к конкретной revision?
deploymentrollbackworkloads - 89
Rollout направляет трафик на поды до их готовности обслуживать запросы; что изменить?
- 90
Rolling update Deployment завис со старыми работающими подами; как найти причину?
problem-solvingdeploymentworkloads - 91
Как выбрать начальные CPU и memory requests и limits для нового workload?
memory - 92
У workload memory request равен 128Mi, limit равен 256Mi, но обычное потребление составляет 400Mi; что изменить?
memory - 93
После увеличения resource requests поды перестали планироваться; как выбрать следующий шаг?
- 94
Karpenter не создаёт node для Pending-пода; что проверить?
workloadsautoscaling - 95
Kyverno policy отклоняет Deployment; как действовать?
workloadsdeployment - 96
Под не запускается, потому что отсутствует Secret от External Secrets; как разбираться?
workloadsconfigurationsecrets - 97
Admission отклоняет образ, потому что не может проверить его подпись; что делать?
- 98
Как совместно использовать Prometheus, Grafana и Loki при нездоровом rollout?
monitoringlogging - 99
Sidecar container падает, а основной контейнер приложения здоров; как оценить состояние пода?
containersworkloads - 100
Что проверить, прежде чем объявить Kubernetes-деплой успешным?
workloadskubernetesdeployment