Skip to content

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

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

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

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

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

Вопросы

reactkubernetes

Controller постоянно сравнивает наблюдаемое состояние кластера с объявленным желаемым состоянием и уменьшает расхождение.

  • Пользователь передаёт intent через API objects, а не отправляет узлам фиксированную последовательность команд.
  • Controllers наблюдают resources и используют labels, selectors и owner references для управления зависимыми объектами.
  • Reconciliation повторяется и должен быть idempotent, потому что events могут дублироваться, а state меняться между наблюдениями.
  • Status хранит наблюдаемый результат, а spec остаётся запрошенным состоянием, к которому стремится controller.

Зачем это спрашивают: Интервьюер проверяет, понимает ли кандидат Kubernetes как сходящиеся control loops, а не imperative orchestration.

workloadsdeployment

Deployment управляет stateless replicated Pods через ReplicaSets и предоставляет declarative rollout и rollback.

  • Его selector находит принадлежащие ему Pods, а Pod template задаёт желаемую revision.
  • Изменение template создаёт новый ReplicaSet и переносит replicas согласно update strategy.
  • Controller заменяет failed или deleted Pods, поддерживая заданное число replicas.
  • Имена и identity Pods являются disposable, поэтому durable identity или storage не должны зависеть от конкретной replica.

Зачем это спрашивают: Сильный ответ связывает поведение Deployment с ReplicaSets, revisions и stateless identity Pods.

workloadsdeployment

maxSurge ограничивает дополнительные Pods сверх желаемого числа replicas, а maxUnavailable ограничивает число недоступных желаемых replicas во время rollout.

  • Больший surge ускоряет замену, но требует свободной cluster capacity.
  • Меньшая unavailability защищает serving capacity, но замедляет progress при постепенном запуске новых Pods.
  • Оба значения принимают абсолютные числа или проценты с правилами округления Deployment controller.
  • Readiness определяет, считается ли новый Pod доступным, поэтому безопасность rollout зависит от осмысленной readiness probe.

Зачем это спрашивают: Интервьюер оценивает, связывает ли кандидат параметры rollout с capacity и availability.

workloadsdeployment

StatefulSet подходит, когда replicas требуют стабильной identity, упорядоченного lifecycle или отдельного persistent storage.

  • Pods получают предсказуемые ordinal names и стабильную network identity после rescheduling.
  • volumeClaimTemplates создаёт отдельный PVC для каждого ordinal вместо одного disposable shared volume.
  • OrderedReady управляет стандартным порядком создания, scaling и updates, а Parallel pod management ослабляет часть порядка.
  • StatefulSet не делает приложение распределённым и не реплицирует данные, эти свойства должен реализовать сам workload.

Зачем это спрашивают: Сильный ответ выбирает StatefulSet по конкретным требованиям identity и storage, не считая его автоматическим clustering базы данных.

workloads

Headless Service предоставляет стабильные DNS records отдельных StatefulSet Pods без virtual Service IP перед ними.

  • clusterIP None заставляет DNS возвращать Pod addresses вместо одного load-balanced address.
  • Каждый ordinal получает предсказуемое имя вида pod-0.service.namespace.svc.
  • Peer-aware systems используют эти records для discovery, membership или leader coordination.
  • Readiness и publishNotReadyAddresses выбираются осознанно, если peers должны находить друг друга до готовности.

Зачем это спрашивают: Интервьюер проверяет понимание стабильного per-Pod discovery и его компромисса с readiness.

workloads

DaemonSet запускает Pod на каждом подходящем node или на каждом node, совпадающем с его scheduling constraints.

  • Типичные применения: log collectors, node monitoring agents, CNI components и storage node plugins.
  • Новые подходящие nodes автоматически получают Pod, а Pods исчезают при уходе своих nodes из кластера.
  • Node selectors, affinity и taints определяют, какие классы nodes фактически запускают daemon.
  • Application replicas, масштабируемые по traffic, обычно принадлежат Deployment, а не DaemonSet.

Зачем это спрашивают: Сильный ответ связывает DaemonSet с node-local ответственностью и scheduling eligibility.

Job создаёт Pods, пока не получит заданное число успешных completions или пока failure policy не остановит попытки.

  • completions задаёт нужное число успехов, а parallelism ограничивает число одновременно работающих Pods.
  • backoffLimit ограничивает retries, а activeDeadlineSeconds ограничивает общее время выполнения.
  • restartPolicy должна быть Never или OnFailure, потому что успешные Job Pods не должны перезапускаться бесконечно.
  • Indexed Jobs дают параллельным workers стабильные completion indexes, если input можно детерминированно разделить.

Зачем это спрашивают: Интервьюер оценивает, умеет ли кандидат выразить completion, parallelism и ограниченный failure для batch work.

jobsworkloadsretention

CronJob создаёт Jobs по расписанию и требует явных правил для пропущенных запусков, пересечений, time zones и history.

  • concurrencyPolicy определяет, разрешить overlapping runs, пропустить их или заменить.
  • startingDeadlineSeconds ограничивает опоздание, при котором пропущенное расписание ещё может создать Job.
  • Поле timeZone явно задаёт трактовку расписания вместо зависимости от defaults controller.
  • Successful и failed history limits не дают старым Job objects накапливаться без ограничений.

Зачем это спрашивают: Сильный ответ выходит за рамки cron syntax и охватывает overlap, missed schedules и object retention.

OnFailure может перезапустить failed container внутри того же Pod, а Never оставляет Pod в terminal state и позволяет Job создать новый.

  • Pod-level restarts сохраняют identity Pod, но историю attempts сложнее видеть как отдельные objects.
  • Never представляет каждую failed attempt отдельным Pod, упрощая inspection ценой большего числа объектов.
  • backoffLimit всё равно управляет retries Job, хотя per-index policies уточняют indexed workloads.
  • Task должна выдерживать retries, потому что Kubernetes не гарантирует отсутствие внешнего side effect у failed attempt.

Зачем это спрашивают: Интервьюер проверяет, различает ли кандидат container restart и Job replacement и понимает ли retry semantics.

designworkloads

Selector controller задаёт владение совпадающими Pods, поэтому должен соответствовать labels template и не пересекаться с другими controllers.

  • Selector, не совпадающий с Pod template, отклоняется для controllers вроде Deployment.
  • Пересекающиеся selectors заставляют controllers конкурировать за похожие Pods и создают небезопасные предположения о владении.
  • Selectors Deployment immutable в стабильном API, поэтому смена identity обычно требует нового Deployment.
  • Labels только для release или observability следует отделять от стабильных labels, задающих identity controller.

Зачем это спрашивают: Сильный ответ считает selectors долговечной границей владения, а не произвольными labels запроса.

cluster

Тип Service определяет, как стабильный virtual endpoint открывается за пределами выбранных Pods.

  • ClusterIP доступен внутри кластера и является default для internal service discovery.
  • NodePort открывает одинаковый port на подходящих nodes и направляет traffic в Service, часто являясь building block, а не конечным public interface.
  • LoadBalancer просит поддерживаемый cloud или implementation controller создать внешний load balancer, обычно поверх Service networking.
  • Все три по-прежнему зависят от selectors или явных EndpointSlices, указывающих ready backends.

Зачем это спрашивают: Интервьюер оценивает, понимает ли кандидат уровни exposure и не путает ли Service с application proxy.

networkingkubernetes

Ingress объявляет intent HTTP routing, а Ingress Controller наблюдает его и настраивает конкретный proxy или load balancer.

  • Создание Ingress без подходящего controller не создаёт data-plane implementation.
  • ingressClassName выбирает controller class, если в кластере несколько implementations.
  • Host и path rules направляют requests в Kubernetes Services, а не напрямую в произвольные Pods.
  • Controller-specific annotations добавляют возможности, но снижают portability за пределами стандартного Ingress API.

Зачем это спрашивают: Сильный ответ отделяет declarative API objects от controller, который их реализует.

tlskubernetesnetworking

Ingress сопоставляет hosts и paths запросов с Service backends, а его TLS section связывает hosts с certificate Secrets.

  • Exact точно совпадает с одним path, а Prefix сопоставляет path segments по правилам Kubernetes.
  • ImplementationSpecific делегирует matching выбранному controller и менее portable.
  • TLS Secret обычно содержит tls.crt и tls.key в том же namespace, что и Ingress.
  • Termination на controller защищает client connection, а backend encryption требует отдельной настройки controller и service.

Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат рассуждать о portable routing и обеих сторонах TLS termination.

gatewaynetworkingapi

Gateway API разделяет infrastructure attachment и application routes и предоставляет более богатые typed routing resources.

  • GatewayClass определяет implementation, Gateway задаёт listeners, а HTTPRoute и другие routes подключают traffic rules.
  • allowedRoutes определяет, Routes из каких namespaces могут подключаться к Gateway, а ReferenceGrant разрешает cross-namespace references на объекты вроде backends.
  • Status conditions стандартизированно показывают acceptance и attachment route.
  • Ingress остаётся подходящим для простого HTTP routing, а Gateway API чище моделирует shared и multi-team traffic infrastructure.

Зачем это спрашивают: Сильный ответ понимает разделение ролей и typed extensibility Gateway API, а не называет его только новым Ingress.

Default-deny policy выбирает Pods и изолирует их так, чтобы принимался только traffic, разрешённый другими applicable policies.

  • Ingress и egress isolation независимы и объявляются для нужных направлений denial.
  • Пустой список ingress или egress rules не разрешает traffic в этом направлении для выбранных Pods.
  • Policies складываются, поэтому последующая policy добавляет разрешённый traffic, а не переопределяет default-deny object.
  • Enforcement требует network plugin, реализующего семантику NetworkPolicy.

Зачем это спрашивают: Интервьюер оценивает, понимает ли кандидат direction isolation, additive rules и enforcement CNI.

namespaceskubernetes

Selectors внутри одной peer entry объединяются через AND, а отдельные peer entries представляют альтернативные разрешённые sources или destinations.

  • podSelector без namespaceSelector выбирает matching Pods в namespace policy.
  • namespaceSelector без podSelector выбирает все подходящие Pods в matching namespaces.
  • Оба selectors в одной entry выбирают matching Pods только внутри matching namespaces.
  • Отступы YAML важны, потому что разделение selectors на две entries расширяет доступ вместо его сужения.

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

dnsnamespaceskubernetes

Egress isolation обычно требует явного разрешения Pods обращаться к cluster DNS service до работы name-based application traffic.

  • Policy может выбрать DNS Pods и разрешить UDP и TCP на настроенном DNS port.
  • Фактические namespace и labels зависят от cluster DNS deployment и не должны угадываться по примерам.
  • Стандартная NetworkPolicy управляет IP и port traffic, а не произвольными DNS names после resolution.
  • Доступ к DNS сам по себе не разрешает resolved destination, которому всё ещё нужна отдельная egress rule.

Зачем это спрашивают: Интервьюер проверяет, отличает ли кандидат name resolution от разрешения на resolved endpoint.

api

Стандартная NetworkPolicy предоставляет namespaced L3 и L4 allow rules, но определяет не все возможности network security.

  • В ней нет native deny-rule priority, потому что applicable allow policies складываются.
  • HTTP paths, methods и другие L7 attributes требуют CNI-specific policy или другого proxy layer.
  • Поведение policy для host networking и части node traffic зависит от network implementation.
  • Такие продукты, как Cilium, расширяют модель, но их resources не являются portable Kubernetes NetworkPolicy.

Зачем это спрашивают: Сильный ответ знает границу portable API и начало implementation-specific возможностей.

workloadsstorage

Ephemeral storage следует lifecycle Pod или container, а persistent storage представлен отдельно и переживает замену Pod.

  • emptyDir создаётся для Pod и удаляется, когда этот Pod окончательно покидает node.
  • PVC ссылается на durable storage, чей lifecycle управляется claims, volumes и reclaim policy, а не одним container restart.
  • ConfigMap, Secret и projected volumes предоставляют configuration data, а не общее durable application storage.
  • Выбор volume начинается с требований durability, sharing, access mode и storage provider.

Зачем это спрашивают: Интервьюер оценивает, сопоставляет ли кандидат lifetime и semantics storage с workload.

PVC запрашивает свойства storage, а Kubernetes привязывает его к одному совместимому PV или динамически создаёт подходящий volume.

  • Совместимость включает requested capacity, access modes, storageClassName и selector constraints.
  • Binding является one-to-one, даже если underlying storage поддерживает доступ нескольких Pods.
  • PVC является namespaced, а PV представляет storage на cluster scope.
  • Pod ссылается на PVC, а не provider-specific детали PV, отделяя intent workload от infrastructure.

Зачем это спрашивают: Сильный ответ объясняет matching, scope и границу abstraction между claim и volume.

Закрытые вопросы

  • 21

    Какую роль StorageClass играет в dynamic provisioning?

    storage
  • 22

    Как access modes и reclaim policies влияют на дизайн persistent storage?

    design
  • 23

    Какие обязанности разделяет архитектура CSI?

    architecture
  • 24

    Как ведут себя volumeClaimTemplates при scaling или удалении StatefulSet?

    workloads
  • 25

    Как CPU и memory requests влияют на scheduling Pod?

    jobsworkloadsmemory
  • 26

    Чем отличается поведение CPU и memory limits?

    memory
  • 27

    Как назначаются и используются QoS-классы Kubernetes?

    kubernetes
  • 28

    Какую проблему решает LimitRange внутри namespace?

    namespaceskubernetes
  • 29

    Как разделить ответственность liveness и readiness probes?

    health-checks
  • 30

    Когда нужна startup probe?

    health-checks
  • 31

    Чем отличаются HTTP, TCP, exec и gRPC probes?

    networkinghealth-checkshttp
  • 32

    Как ServiceAccount даёт Pod identity для Kubernetes API?

    workloadsapi
  • 33

    Чем отличаются Role и ClusterRole в RBAC?

    rbaccluster
  • 34

    Как RoleBinding и ClusterRoleBinding меняют scope permissions?

    cluster
  • 35

    Что означает least-privilege RBAC на практике?

    rbac
  • 36

    Какую изоляцию дают namespaces и какую не дают?

    namespaceskubernetes
  • 37

    Как ResourceQuota управляет namespace?

    namespaceskubernetes
  • 38

    Когда для размещения Pod достаточно nodeSelector?

    jobs
  • 39

    Как node affinity расширяет nodeSelector?

    scheduling
  • 40

    Когда использовать pod affinity или anti-affinity?

    workloadsscheduling
  • 41

    Чем topology spread constraints отличаются от pod anti-affinity?

    workloadsschedulingspread
  • 42

    Как taints и tolerations влияют на scheduling?

    jobsscheduling
  • 43

    Как PriorityClass и preemption влияют на scheduling?

    jobs
  • 44

    Что входит в базовый Helm chart?

    helm
  • 45

    Как проектировать Helm values и templates?

    helmdesign
  • 46

    Как Helm install, upgrade и rollback управляют release?

    rollbackhelm
  • 47

    Как HPA вычисляет желаемое число replicas?

    replication
  • 48

    Почему CPU requests важны для HPA target по CPU utilization?

  • 49

    Как HPA behavior settings и multiple metrics влияют на scaling?

    scalingmonitoring
  • 50

    Когда KEDA дополняет или заменяет обычную конфигурацию HPA?

    config
  • 51

    Как безопасно развернуть новый stateless-сервис в production-кластере Kubernetes?

    kubernetesclusterdeployment
  • 52

    Новый под находится в CrashLoopBackOff; как вы будете искать причину?

    workloadstroubleshootingdeployment
  • 53

    После изменения Cilium сервисы в нескольких namespaces периодически получают тайм-ауты; как вы это отладите?

    resiliencenamespaceskubernetes
  • 54

    Поды разрешают внешние домены, но не имя внутреннего Service; как вы отладите CoreDNS и service discovery?

  • 55

    Поды Deployment застряли в Pending, хотя в кластере как будто есть свободные ресурсы; что вы проверите?

    capacityworkloadscluster
  • 56

    Во время скачка трафика несколько подов получили статус Evicted; как найти и устранить причину?

  • 57

    Production-rollout заблокирован статусом ImagePullBackOff только на части нод; как вы это диагностируете?

  • 58

    После релиза Ingress начал возвращать 502, хотя поды имеют статус Ready; как вы проведёте расследование?

    networkingkubernetes
  • 59

    Клиенты сообщают об ошибках TLS-сертификата для одного hostname за ingress controller; что вы проверите?

    tlskubernetesnetworking
  • 60

    Как перенести существующий маршрут Ingress на Gateway API без риска для всего трафика?

    gatewaynetworkingapi
  • 61

    Приложение получает ошибку forbidden при чтении списка ConfigMaps; как вы отладите RBAC?

    rbacconfigkubernetes
  • 62

    Вы обнаружили, что приложение в namespace использует cluster-admin; как безопасно сократить его права?

    namespacesclusterkubernetes
  • 63

    CPU насыщен, но HPA не добавляет реплики; как вы найдёте причину?

    replication
  • 64

    Очередь быстро растёт, но KEDA удерживает consumer на одной реплике; что вы проверите?

    backlogreplicationdata-structures
  • 65

    Как применить рекомендации VPA к чувствительному к задержке сервису без простоя?

    latency
  • 66

    Rolling update застрял, и одновременно работают старые и новые поды; как вы его разблокируете?

    deployment-strategiesproblem-solving
  • 67

    Релиз под управлением Argo CD повысил число ошибок; как откатить его, не создавая новый drift?

    iacgitops
  • 68

    Под находится в Pending из-за непривязанного PersistentVolumeClaim; как вы его отладите?

    workloads
  • 69

    Под StatefulSet не запускается после переноса между нодами из-за ошибки multi-attach тома; что вы сделаете?

    workloads
  • 70

    Контейнер постоянно получает OOMKilled, хотя на ноде есть свободная память; как это исправить?

    containersmemory
  • 71

    У сервиса высокая задержка и CPU throttling при умеренном среднем потреблении CPU; как вы это исследуете?

    latency
  • 72

    Как настроить requests и limits для сервиса, который тратит лишнюю ёмкость, но должен переживать пики трафика?

    capacity
  • 73

    Karpenter видит Pending-поды, но не создаёт ноду; как вы отладите его решение?

    autoscaling
  • 74

    Karpenter consolidation экономит деньги, но постоянно прерывает workloads; как вы его настроите?

    autoscaling
  • 75

    Argo CD ApplicationSet успешно разворачивается в большинстве кластеров, но падает в двух; как вы проведёте расследование?

    deploymentgitopscluster
  • 76

    После аварийного ручного исправления Argo CD показывает приложение как OutOfSync; как безопасно устранить расхождение?

    gitops
  • 77

    Admission webhook Gatekeeper отвечает по тайм-ауту и блокирует все развёртывания; как безопасно восстановить работу?

    workloadswebhooksdeployment
  • 78

    Как внедрить новый Gatekeeper constraint, который сейчас нарушают существующие workloads?

  • 79

    Как перевести namespace на профиль Restricted в Pod Security Admission, не сломав workloads?

    workloadsnamespaceskubernetes
  • 80

    После rollout service mesh у одного сервиса выросла задержка и появились периодические ответы 503; как вы это отладите?

    service-meshlatency
  • 81

    Во время ротации сертификатов начинает падать mutual TLS-трафик в service mesh; что вы проверите?

    service-meshtls
  • 82

    Пользователи сообщают о медленных запросах, но health подов и CPU-дашборды в норме; как применить Prometheus, Loki и Tempo?

    monitoringloggingworkloads
  • 83

    Алерт kube-prometheus сообщает о высоком числе API-ошибок, но команда сервиса не видит инцидента; как проверить алерт?

    alertingmonitoringapi
  • 84

    Как доказать, что backup Velero восстановит namespace после случайного удаления?

    backupsnamespaceskubernetes
  • 85

    Velero restore пересоздаёт ресурсы, но данные приложения несогласованы; как улучшить схему backup?

    designbackups
  • 86

    Объект Machine в Cluster API остаётся в Provisioning и не подключается к workload cluster; как вы его отладите?

    joinsapicluster
  • 87

    Как обновить workload cluster под управлением Cluster API с сохранением доступности сервиса?

    clusterapi
  • 88

    Поды на одной ноде потеряли сетевую связность, хотя нода остаётся Ready; как отладить путь CNI?

    networking
  • 89

    Новая NetworkPolicy заблокировала приложению доступ к базе данных; как найти недостающее правило?

    database
  • 90

    ClusterIP Service работает для подов на одной ноде, но падает между нодами в кластере Cilium; что вы проверите?

    cluster
  • 91

    Под нагрузкой растёт задержка DNS и приложения получают тайм-ауты; как стабилизировать CoreDNS?

    dnsresiliencelatency
  • 92

    Во время обслуживания drain ноды заблокирован объектами PodDisruptionBudget; как действовать?

  • 93

    Topology spread constraints оставили реплики в Pending во время дефицита ёмкости в zone; как сбалансировать доступность и scheduling?

    capacityjobsreplication
  • 94

    Под остаётся в Init, потому что init container с миграцией не завершается; как выполнить диагностику и восстановление?

    containersmigrationsworkloads
  • 95

    Во время rollout под долго остаётся в Terminating; что вы проверите до принудительного удаления?

    workloads
  • 96

    ConfigMap или Secret изменился, но запущенные поды используют старые значения; как надёжно развернуть обновление?

    configurationconfigkubernetes
  • 97

    У workload есть написанный вручную HPA и KEDA ScaledObject, а число реплик колеблется; как это исправить?

    replication
  • 98

    Трафик внезапно удвоился, но добавление реплик подов не восстановило latency; как отладить и масштабировать весь путь?

    replicationlatencyworkloads
  • 99

    HTTPRoute существует, но трафик всё ещё идёт в старый backend; как отладить attachment и precedence в Gateway API?

    gatewayapi
  • 100

    Как после развёртывания изменения высоконагруженного сервиса решить, продолжать, остановиться или откатиться?

    deploymentrollback