Вопросы на собеседовании: Kubernetes-инженер
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Middle.
Смотреть пример резюме: Kubernetes-инженер →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Controller постоянно сравнивает наблюдаемое состояние кластера с объявленным желаемым состоянием и уменьшает расхождение.
- Пользователь передаёт intent через API objects, а не отправляет узлам фиксированную последовательность команд.
- Controllers наблюдают resources и используют labels, selectors и owner references для управления зависимыми объектами.
- Reconciliation повторяется и должен быть idempotent, потому что events могут дублироваться, а state меняться между наблюдениями.
- Status хранит наблюдаемый результат, а spec остаётся запрошенным состоянием, к которому стремится controller.
Зачем это спрашивают: Интервьюер проверяет, понимает ли кандидат Kubernetes как сходящиеся control loops, а не imperative orchestration.
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.
maxSurge ограничивает дополнительные Pods сверх желаемого числа replicas, а maxUnavailable ограничивает число недоступных желаемых replicas во время rollout.
- Больший surge ускоряет замену, но требует свободной cluster capacity.
- Меньшая unavailability защищает serving capacity, но замедляет progress при постепенном запуске новых Pods.
- Оба значения принимают абсолютные числа или проценты с правилами округления Deployment controller.
- Readiness определяет, считается ли новый Pod доступным, поэтому безопасность rollout зависит от осмысленной readiness probe.
Зачем это спрашивают: Интервьюер оценивает, связывает ли кандидат параметры rollout с capacity и availability.
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 базы данных.
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.
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.
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.
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 запроса.
Тип 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.
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, который их реализует.
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.
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.
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.
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.
Стандартная 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 возможностей.
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