Skip to content

Вопросы на собеседовании: Kubernetes-инженер

100 реальных вопросов с образцовыми ответами и пояснениями для уровня Junior.

Смотреть пример резюме: Kubernetes-инженер

Тренировка флешкарточками

Интервальное повторение · Hunter Pass

Вопросы

kubernetes

Kubernetes является платформой управления контейнерными workloads, которая поддерживает объявленное состояние приложений в кластере.

  • Он планирует workloads на доступные узлы вместо ручного размещения.
  • Controllers заменяют отказавшие экземпляры и согласуют фактическое состояние с желаемым.
  • Services предоставляют стабильный доступ, пока Pods могут создаваться и удаляться.
  • Kubernetes даёт примитивы оркестрации, но код приложения и container images остаются ответственностью пользователя.

Зачем это спрашивают: Интервьюер проверяет понимание Kubernetes как декларативной системы оркестрации контейнеров, а не container runtime.

kubernetescluster

Kubernetes-кластер является группой компонентов control plane и worker nodes, которые совместно запускают workloads и управляют ими.

  • Control plane хранит желаемое состояние и принимает решения для всего кластера.
  • Worker nodes предоставляют CPU, память, сеть и storage для Pods.
  • Компоненты общаются через Kubernetes API, а не работают одним процессом.
  • Кластер может содержать один или много узлов в зависимости от назначения и требований доступности.

Зачем это спрашивают: Сильный ответ называет control plane, worker nodes и координацию через API основой структуры кластера.

containers

Контейнеры изолируют процессы и используют общее ядро хоста, а виртуальные машины включают гостевую ОС на виртуализированном оборудовании.

  • Container image упаковывает приложение и его user-space зависимости без отдельного ядра.
  • Виртуальные машины обычно дают более сильную границу изоляции, но требуют больше ресурсов и запускаются дольше.
  • Несколько контейнеров могут работать на одном узле через container runtime.
  • Kubernetes планирует контейнеры внутри Pods и не заменяет операционную систему узла.

Зачем это спрашивают: Интервьюер оценивает понимание модели изоляции и ресурсов, на которой строится Kubernetes.

workloadskubernetes

Pod является наименьшей развёртываемой единицей Kubernetes и содержит один или несколько тесно связанных контейнеров.

  • Контейнеры Pod вместе планируются на один узел.
  • Они разделяют сетевой namespace Pod, IP-адрес и localhost.
  • Они могут совместно использовать volumes, объявленные в спецификации Pod.
  • Pods являются расходными объектами, поэтому обычно их создают и заменяют высокоуровневые controllers.

Зачем это спрашивают: Интервьюер проверяет понимание Pod как границы планирования и общих ресурсов.

containersworkloads

Pod может объединять контейнеры, которым нужно разделять lifecycle, сеть и storage как одной единице приложения.

  • Основной контейнер может запускать приложение, а helper выполнять тесно связанную вспомогательную функцию.
  • Контейнеры общаются через localhost, потому что разделяют один network namespace.
  • Общие volumes позволяют одному контейнеру создавать файлы для другого.
  • Несвязанные сервисы обычно должны находиться в отдельных Pods, чтобы независимо масштабироваться и обновляться.

Зачем это спрашивают: Сильный ответ объясняет multi-container Pods тесной связанностью и понимает, когда нужны отдельные Pods.

workloads

Каждый Pod обычно получает собственный cluster IP address, общий для всех его контейнеров.

  • Контейнеры внутри Pod общаются через localhost и разные порты.
  • Другие Pods обращаются по Pod IP, если это разрешает сеть кластера.
  • Pod IP нестабилен при замене, поэтому клиенты обычно используют Service.
  • Сетевая модель Kubernetes предполагает маршрутизацию Pod IP между узлами без port mapping на уровне приложения.

Зачем это спрашивают: Интервьюер проверяет базовое понимание сети Pod и причины отдельного стабильного service discovery.

workloadskubernetes

Фаза Pod является общим описанием его жизненного цикла: Pending, Running, Succeeded, Failed или Unknown.

  • Pending означает, что Kubernetes принял Pod, но один или несколько контейнеров ещё не готовы к запуску.
  • Running означает, что Pod привязан к узлу и хотя бы один контейнер работает, запускается или перезапускается.
  • Succeeded и Failed означают завершение всех контейнеров с успехом или хотя бы одной ошибкой соответственно.
  • Фаза шире состояния контейнера и не равна условию Ready.

Зачем это спрашивают: Интервьюер оценивает, различает ли кандидат фазу lifecycle Pod, состояние контейнера и readiness.

workloads

restartPolicy сообщает kubelet, когда перезапускать завершившиеся application containers в том же Pod.

  • Always перезапускает завершившийся контейнер независимо от результата выхода.
  • OnFailure перезапускает только контейнеры, завершившиеся с ошибкой.
  • Never оставляет завершившийся контейнер остановленным.
  • Политика применяется к application containers в Pod и не пересоздаёт Pod на другом узле.

Зачем это спрашивают: Сильный ответ объясняет перезапуск контейнера и не путает его с заменой Pod контроллером.

containers

Init container выполняется до успешного завершения перед запуском обычных application containers Pod.

  • Несколько init containers выполняются последовательно в указанном порядке.
  • Каждый должен завершиться успешно до запуска следующего init container или application container.
  • Init containers могут использовать отдельные images, commands, security settings и общие volumes.
  • Они подходят для предварительной настройки без помещения этой логики в основной application image.

Зачем это спрашивают: Интервьюер проверяет понимание порядка init containers и их отличия от долгоживущих application containers.

containers

Sidecar является вспомогательным контейнером, работающим рядом с основным application container в одном Pod.

  • Он разделяет сеть Pod и может использовать общие с приложением volumes.
  • Типичные роли включают proxying, сбор телеметрии или адаптацию файлов для основного процесса.
  • Sidecar тесно связан с lifecycle Pod, а не развёртывается и масштабируется как независимый сервис.
  • Sidecar увеличивает потребление ресурсов и операционную поверхность Pod, поэтому связанность должна быть осознанной.

Зачем это спрашивают: Сильный ответ определяет sidecar через общий lifecycle и ресурсы, а не через один конкретный инструмент.

workloadskubernetesdeployment

Deployment декларативно управляет набором реплицированных application Pods и их обновлениями.

  • Его Pod template описывает контейнеры и metadata для новых Pods.
  • Поле replicas задаёт число существующих matching Pods.
  • Deployment создаёт ReplicaSets и управляет ими, а не владеет Pods напрямую.
  • Он предназначен для stateless workloads, Pods которых можно заменить из одного template.

Зачем это спрашивают: Интервьюер проверяет понимание Deployment как высокоуровневого controller для реплицированных Pods.

replicationworkloads

ReplicaSet является controller, который поддерживает заданное число matching Pod replicas.

  • Он использует label selector для определения управляемых Pods.
  • Если matching Pods слишком мало, он создаёт новые из Pod template.
  • Если matching Pods слишком много, он удаляет лишние.
  • Пользователи обычно управляют ReplicaSets через Deployments, добавляющие обновления и revisions.

Зачем это спрашивают: Сильный ответ объясняет reconciliation ReplicaSet и его связь с Deployment.

workloadsreplicationdeployment

Deployment управляет ReplicaSets, а каждый ReplicaSet поддерживает Pods, созданные из одной revision template.

  • Изменение Pod template Deployment приводит к созданию нового ReplicaSet.
  • Новый и старый ReplicaSets меняют число replicas согласно стратегии обновления.
  • Pods получают owner references, связывающие их с ReplicaSet.
  • Такое многоуровневое владение позволяет Kubernetes сохранять желаемое число replicas при замене версии workload.

Зачем это спрашивают: Интервьюер оценивает понимание иерархии controllers за обычным application workload.

replicationdeploymentworkloads

Поле replicas объявляет желаемое число доступных экземпляров Pod для workload Deployment.

  • Deployment и его ReplicaSet постоянно сравнивают желаемое и наблюдаемое количество.
  • Отсутствующий Pod заменяется, чтобы число вернулось к объявленному значению.
  • Несколько replicas могут распределять application traffic между отдельными экземплярами Pod.
  • Replicas дублируют Pod template, но автоматически не делят данные приложения.

Зачем это спрашивают: Интервьюер проверяет понимание желаемого числа replicas и отсутствие путаницы между репликацией и шардингом данных.

reactkubernetes

Reconciliation является повторяющимся процессом приближения фактического состояния кластера к желаемому состоянию из API.

  • Controller наблюдает ресурсы, относящиеся к управляемому им состоянию.
  • Он сравнивает объявленную спецификацию с текущими объектами или условиями.
  • При различии состояний он создаёт, обновляет или удаляет ресурсы.
  • Цикл повторяется, поэтому Kubernetes может исправлять последующий drift, а не выполнять одноразовый скрипт.

Зачем это спрашивают: Сильный ответ называет control-loop model, лежащую в основе Deployments, ReplicaSets и других ресурсов Kubernetes.

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.

kubernetes

Annotations хранят неидентифицирующие metadata, а labels предназначены для выбора и группировки объектов.

  • Annotations могут содержать конфигурацию инструментов, ownership links, checksums или описательные детали.
  • Selectors не могут запрашивать annotations.
  • Значения annotation могут хранить более крупный и менее структурированный текст, чем labels.
  • Metadata для определения членства в Service или controller должны находиться в labels, а не annotations.

Зачем это спрашивают: Интервьюер оценивает, умеет ли кандидат выбирать правильный механизм metadata для selection и описательной информации.

namespaceskubernetes

Namespace создаёт логическую область для многих namespaced resources внутри одного кластера.

  • Pods, Deployments, Services, ConfigMaps и Secrets обычно принадлежат Namespace.
  • Одинаковое имя ресурса может существовать в разных Namespaces.
  • RBAC rules, quotas и policies можно применять по Namespace.
  • Namespaces организуют и ограничивают scope ресурсов, но автоматически не являются полной security boundary.

Зачем это спрашивают: Сильный ответ охватывает scope имён и политик, не преувеличивая изоляцию Namespace.

namespaceskubernetescluster

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