Вопросы на собеседовании: Kubernetes-инженер
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Senior.
Смотреть пример резюме: Kubernetes-инженер →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Я бы запустил три control-plane ноды и три совмещённых участника etcd, по одному на стойку, за двумя load balancer с virtual IP.
- Три участника etcd выдерживают потерю одной стойки; пять увеличат задержку записи, но не улучшат заданную устойчивость к одной стойке.
- Scheduler и controller-manager работают в трёх репликах с leader election, а трафик принимают все три API server.
- Я резервирую CPU и память для control plane и до запуска проверяю изоляцию стойки и failover load balancer.
Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат превратить цель доступности в конкретный дизайн кворума, размещения и failover.
Я выберу пять участников, потому что кворум из пяти выдерживает два отказа, а из трёх только один.
- Я размещу их по схеме 2-2-1 в трёх зонах и проверю, что после потери любой зоны с двумя участниками остаются три голоса.
- Межзонная задержка должна быть низкой и стабильной, желательно меньше 10 мс, потому что каждая запись ждёт большинство.
- Шесть участников не нужны: они всё равно выдерживают только два отказа и добавляют ещё одну цель репликации.
Зачем это спрашивают: Сильный ответ правильно считает кворум и учитывает несимметричное размещение по зонам и задержку записи.
Сначала я ограничу churn объектов, а затем измерю и настрою etcd, не сводя проблему только к объёму диска.
- Я использую выделенные SSD с низкой задержкой и ставлю алерты на p99 fsync и WAL до приближения к тревожному уровню 100 мс.
- Я сокращаю частые status update, крупные Secrets и ConfigMaps, а также контроллеры, которые делают повторный LIST вместо watch.
- Я выполняю compaction ревизий, поочерёдную defragmentation участников и нагрузочный тест rollout на точных версиях Kubernetes и etcd.
Зачем это спрашивают: Интервьюер ждёт практического понимания узких мест etcd: задержки диска, churn объектов и обслуживания.
Я буду делать зашифрованные snapshots каждые 15 минут и докажу, что полное восстановление control plane укладывается в 60 минут.
- Snapshots хранятся в отдельном аккаунте или регионе с retention и проверкой целостности, а не на volume того же кластера.
- Runbook восстанавливает новый логический кластер etcd, обновляет endpoints и сертификаты API server, затем проверяет контроллеры и workloads.
- Регулярный тест восстановления фиксирует возраст snapshot, длительность restore, отсутствующие внешние ресурсы и фактически достигнутые RPO и RTO.
Зачем это спрашивают: Интервьюер проверяет, образуют ли частота backup, механика restore и измеренные цели восстановления единый рабочий дизайн.
Сначала я уберу повторные LIST, потому что они умножают работу по каждому объекту, и только потом добавлю реплики API server.
- Контроллеры должны использовать shared informers, watches, pagination и узкие label или field selectors.
- Я настрою API Priority and Fairness, чтобы трафик kubelet, leader election и системных контроллеров сохранял места под нагрузкой tenant-ов.
- Я слежу за request rate, inflight requests, промахами watch cache, размером ответов и задержкой etcd при воспроизведении ожидаемой нагрузки.
Зачем это спрашивают: Сильный ответ исправляет паттерн запросов и защищает критический трафик, а не полагается только на горизонтальное масштабирование.
Я использую shared региональные кластеры для обычных команд и выделенные PCI-кластеры для двенадцати регулируемых workloads.
- Namespaces, RBAC, quotas и NetworkPolicy дают soft multi-tenancy командам внутри общей границы доверия.
- PCI-workloads получают отдельные control plane, node identities, audit trail и окна обновления, потому что namespace не является жёсткой границей безопасности.
- Оба класса я стандартизирую одинаковыми шаблонами Cluster API и policy bundle, чтобы дополнительные кластеры не стали уникальными snowflake.
Зачем это спрашивают: Интервьюер оценивает, следуют ли границы кластеров требованиям доверия и compliance, а не только числу команд.
Я запущу по автономному кластеру в каждом регионе и оставлю каждый control plane и кворум etcd внутри региона.
- Global DNS или anycast edge отправляет пользователей на ближайший здоровый региональный ingress.
- Конфигурация workloads реплицируется через GitOps, но живой трафик API и etcd не пересекает Атлантику.
- Stateful-сервисам нужен явный дизайн репликации и failover, потому что Kubernetes federation не решает межрегиональную консистентность данных.
Зачем это спрашивают: Сильный ответ оставляет failure domains control plane локальными и отделяет размещение workloads от репликации данных.
Я зарезервирую в любых двух зонах достаточно мощности, чтобы выдержать критическую нагрузку после потери третьей.
- Node pools охватывают все три зоны, но минимальная мощность считается примерно с 50% запасом в оставшейся паре, а не только по равному числу нод.
- Критические Deployments используют topologySpreadConstraints с maxSkew 1 и Pod anti-affinity там, где совместное размещение реплик недопустимо.
- PodDisruptionBudgets защищают добровольные drain, а readiness и failover-тесты доказывают устойчивость приложения к внезапной потере зоны.
Зачем это спрашивают: Интервьюер проверяет, действительно ли топология, запас мощности и ограничения workloads выполняют требование отказоустойчивости.
Я сразу определю границу шардирования и проверю плановый предел одного кластера нагрузочными тестами.
- Сначала я разделю по регионам и trust domain, потому что эти границы также уменьшают blast radius отказов и доступа.
- Я тестирую API request rate, число watches, объём EndpointSlice, задержку scheduler и рост базы etcd при прогнозируемом churn.
- Я не создаю произвольные шарды по 500 нод, потому что каждый кластер дублирует add-ons, обновления, запас мощности и эксплуатационные расходы.
Зачем это спрашивают: Сильный ответ считает опубликованные лимиты Kubernetes потолком и выводит размер кластера из измеренной нагрузки и blast radius.
Я задам строгий бюджет задержки для всей admission chain и уберу из неё некритичную синхронную работу.
- При цели API 500 мс я выделю примерно 100 мс p99 на каждый webhook, оставив остаток на authentication, storage и сеть.
- Каждый webhook работает минимум в трёх репликах по зонам с readiness probes, PodDisruptionBudget и без зависимости от допускаемого workload.
- Security-проверки fail closed, advisory mutation может fail open, но каждая failure policy и timeout проверяются при отключении webhook.
Зачем это спрашивают: Интервьюер ждёт конкретный admission-дизайн, который балансирует применение политик и доступность control plane.
Я использую один namespace на приложение и окружение, а принадлежность команде задам labels вместо одного огромного namespace на команду.
- Имена вроде payments-api-prod явно показывают владельца и окружение, а labels управляют quotas, policies, cost reports и автоматизацией.
- Шаблон namespace создаёт RoleBindings, ResourceQuota, LimitRange, default-deny policies и базовый service account.
- Число namespaces я ограничу только после измерения нагрузки control plane; 2 700 namespaces допустимы при эффективных watches контроллеров.
Зачем это спрашивают: Интервьюер проверяет, поддерживают ли границы namespaces владение, автоматизацию политик и масштаб без произвольной иерархии.
Я привяжу переиспользуемый ClusterRole через RoleBinding в этом namespace и исключу поверхности privilege escalation.
- Роль может управлять namespaced workloads, Services, ConfigMaps и Secrets своего приложения.
- Она не может привязывать более широкие роли, impersonate пользователей, менять admission webhooks или CRDs и получать доступ к Nodes и PersistentVolumes.
- Workloads используют отдельные service accounts с более узкими Roles, а audit rules отмечают попытки изменить RBAC или выполнить exec в защищённые поды.
Зачем это спрашивают: Сильный ответ знает, что namespaced admin всё равно требует явной защиты от эскалации RBAC и cluster-scoped ресурсов.
Я гарантирую меньше пиковой заявки и сделаю burst явным, а не зарезервирую 40% кластера навсегда.
- Например, я задам requests.cpu quota 200 cores и limits.cpu 400 после проверки измеренного p95 команды и бизнес-приоритета.
- Namespace quotas также ограничат memory requests, число объектов, ёмкость PVC и LoadBalancer Services для защиты не только CPU.
- Prometheus предупреждает на 80% quota, а согласованный путь повышения не даёт команде впервые увидеть лимит во время релиза.
Зачем это спрашивают: Интервьюер оценивает, кодируют ли quotas измеренные гарантии, политику burst и дефицитные ресурсы помимо CPU.
Я введу консервативные defaults по классам workloads, а не одно большое значение, которое скроет плохой sizing.
- Для обычных web-подов можно начать со 100m CPU и 128 MiB memory requests при limits 1 CPU и 512 MiB.
- Batch и JVM namespaces получат другие шаблоны, потому что одинаковые defaults исказят scheduling и OOM-поведение.
- Сначала я проведу audit и warning, затем enforcement после явных значений команд; иначе defaults незаметно вызовут throttling или OOMKills.
Зачем это спрашивают: Сильный ответ использует LimitRange как страховку, но признаёт, что общие defaults могут создать новые production failures.
Сначала я сгенерирую allow rules из наблюдаемого трафика, затем буду включать enforcement группами namespaces, а не сразу во всём парке.
- Каждый namespace получает default-deny ingress и egress плюс явный DNS-доступ к kube-dns по TCP и UDP 53.
- Platform namespaces публикуют стабильные labels для ingress, metrics scraping, tracing и одобренных shared services.
- До enforcement я две недели анализирую Cilium Hubble или Calico flow logs, а у каждой группы есть проверенный rollback commit.
Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат внедрить строгую сетевую базу с учётом реальных зависимостей shared-кластера.
Platform-команда будет владеть Gateway и listeners, а команды приложений будут владеть HTTPRoutes в своих namespaces.
- allowedRoutes разрешает attachment только namespaces с одобренным label, поэтому tenant не сможет забрать все hostnames.
- ReferenceGrant требуется для намеренных cross-namespace ссылок на backend или сертификат вместо широкого доступа.
- Admission policy проверяет владение hostname и требования TLS до попадания маршрута на shared gateway.
Зачем это спрашивают: Сильный ответ использует границы ресурсов Gateway API для разделения инфраструктуры и маршрутов tenant-ов.
Я доставлю один версионированный Kyverno bundle через GitOps и переведу каждое правило из Audit в Enforce после измерения нарушений.
- Bundle проверяет runAsNonRoot, блокирует privileged и host namespace access, проверяет подписи образов и требует digest.
- Исключение содержит namespace, владельца, причину и дату истечения вместо постоянного wildcard.
- Я делаю canary на одном кластере, слежу за admission p99 и rejection count, затем продвигаю волнами с проверенной rollback-версией.
Зачем это спрашивают: Интервьюер оценивает покрытие политик, гигиену исключений, производительность и поэтапный enforcement во всём парке.
Я ограничу и активный compute, и churn Kubernetes-объектов этого tenant.
- ResourceQuota ограничивает активные Jobs, Pods, CPU и memory, а TTLAfterFinished удаляет завершённые Jobs после короткого срока, например одного часа.
- Kueue допускает batch-работу по quota tenant-а вместо одновременного создания тысяч Pending Pods.
- API Priority and Fairness выделяет tenant ограниченную долю запросов, чтобы kubelet и системные контроллеры оставались отзывчивыми.
Зачем это спрашивают: Сильный ответ защищает compute, число объектов и API capacity, а не сводит noisy-neighbor control только к CPU quota.
Он должен создать полную границу tenancy, а не только объект Namespace.
- Workflow назначает owner и cost labels, RoleBindings, workload service accounts, ResourceQuota и LimitRange.
- Он устанавливает default-deny NetworkPolicies, labels Pod Security Admission, approved registry policy и базовые observability hooks.
- Conformance Job проверяет DNS, image pulls, metrics, policy rejection и quota до завершения onboarding в целевые 15 минут.
Зачем это спрашивают: Интервьюер проверяет, является ли provisioning namespace проверенным контрактом платформы, а не шагом создания YAML.
Нет, я помещу враждебный код в отдельный кластер или более сильную sandbox-границу, а не положусь только на namespaces.
- Namespaces разделяют kernel, kubelet, CNI dataplane и control plane, поэтому container escape пересечёт предполагаемую границу tenant.
- Если важна плотность, я добавлю gVisor или Kata Containers, выделенные tainted nodes, отдельные identities и строгий egress, но это дополнительные меры.
- Внутренний multi-tenancy может оставаться namespace-based, потому что его threat model это случайное вмешательство, а не взаимно враждебное выполнение.
Зачем это спрашивают: Сильный ответ отличает мягкую организационную tenancy от жёсткой изоляции недоверенного кода.
Закрытые вопросы
- 21
Выберите CNI для EKS-кластера на 500 нод, которому нужны NetworkPolicy, visibility потоков и работа без kube-proxy. Что выберете и почему?
proxynetworkingcluster - 22
Для 300 on-prem нод в двух дата-центрах вы выберете overlay или native routed Pod network?
workloads - 23
Нужны переносимые L3 и L4 policies на разных версиях Linux, но не нужна замена kube-proxy. Выберете Calico или Cilium?
proxy - 24
В кластере 12 000 Services и 80 000 endpoints. Какой service dataplane вы будете тестировать: iptables, IPVS или eBPF?
clusterendpoints - 25
Рассчитайте ёмкость Pod IP для 1 000 нод, максимум 110 подов на ноду и 30% запаса роста.
capacityworkloads - 26
Underlay нод использует 1500 байт и VXLAN. Какой Pod MTU вы зададите и как докажете правильность?
workloadsconfig - 27
Как проверить, что 10 000 NetworkPolicies не сделают rollout небезопасными?
validation - 28
Регулируемый tenant может обращаться только к 40 одобренным SaaS-доменам. Как реализовать Kubernetes egress control?
kubernetescloud - 29
Включите ли вы dual-stack IPv4 и IPv6 в новом кластере на 200 нод, если IPv6 нужен только 10% сервисов?
cluster - 30
Нужно соединить десять кластеров с пересекающимися Pod CIDRs и сохранить изоляцию отказов. Какую сетевую модель вы выберете?
workloadscluster - 31
Web API работает в 20 репликах с CPU request 500m и должен масштабироваться при 60% utilization. Трафик удваивается за пять минут. Как настроить HPA?
replicationapiconfig - 32
CPU остаётся ровным, но API должен держать очередь ниже 50 запросов на под. Какую метрику HPA выбрать?
workloadsapimonitoring - 33
HPA каждые несколько минут прыгает между 30 и 80 репликами. Какие настройки и сигналы вы измените?
replication - 34
JVM-сервис завышает requests в три раза, но использует HPA по CPU. Как внедрить VPA без конфликтующих loops?
- 35
Worker обрабатывает 20 сообщений в секунду, а очередь может вырасти до 120 000 сообщений. Спроектируйте KEDA scaling для очистки за 10 минут.
scalingdesignconcurrency - 36
Для EKS с непредсказуемыми формами instances и scale-up SLO 90 секунд вы выберете Cluster Autoscaler или Karpenter?
scalingslocluster - 37
Ноды становятся Ready за четыре минуты, но workload SLO допускает только 60 секунд задержки scale-up. Как закрыть разрыв?
slo - 38
Утилизация кластера 25%, но команды утверждают, что requests нельзя безопасно снизить. Как получить новые значения?
cluster - 39
Спроектируйте capacity Karpenter для сервиса с доступностью 99,95%, который может экономить на interruptible workloads.
designcapacityautoscaling - 40
StatefulSet масштабируется с 6 до 20 реплик, но новый volume создаётся 90 секунд. Какие ожидания от autoscaling вы зададите?
scalingworkloadsreplication - 41
Спроектируйте operator, который создаёт одну внешнюю базу на каждый Database CR и не дублирует базы после retries.
designoperatorsdatabase - 42
CRD v1 хранит replicas как integer, а v2 заменяет его объектом scaling policy. Как провести migration без поломки clients?
replicationscaling - 43
Cloud bucket под управлением operator должен удаляться вместе со своим CR. Как избежать и утечек, и навечно зависшего deletion?
problem-solvingoperators - 44
Operator управляет 20 000 ресурсов, но провайдер разрешает 100 API calls в секунду. Как организовать reconciliation?
reactapioperators - 45
Команда хочет хранить 50 000 высокочастотных sensor updates в секунду в CRDs. Вы одобрите это?
- 46
StatefulSet работает в трёх зонах и использует zonal block volumes. Какой binding mode StorageClass вы выберете?
workloadsstorage - 47
Запустите ли вы PostgreSQL из трёх участников как StatefulSet в трёх зонах? Что решает Kubernetes и что остаётся?
workloadskubernetescluster - 48
Базе нужны 15 000 IOPS и p99 storage latency ниже 5 мс. Как выбрать и проверить класс volume через CSI?
databaselatency - 49
PVC на 2 TiB заполнен на 85% и растёт на 20 GiB в день. Какой план expansion и backup вы выполните?
backups - 50
Спроектируйте recovery storage для stateful-сервиса с RPO 5 минут и RTO 30 минут после потери целой зоны.
design - 51
Одна из 60 worker nodes отказывает при 8 000 запросов в секунду и уносит с собой 6 из 48 API Pods. Что вы делаете в первые 15 минут?
api - 52
Зона с 35% capacity кластера пропадает, а ошибки checkout растут с 0,2% до 4%. Разберите реагирование.
capacitycluster - 53
После rollout node image 12 из 200 нод становятся NotReady на 90 секунд каждые восемь минут. Будете их drain?
- 54
За десять минут evicted 300 подов, а пять нод показывают MemoryPressure. Как остановить каскад evictions?
memory - 55
Java Pod с memory limit 4 GiB получает OOMKilled шесть раз в час, но обычный working set равен 3,6 GiB. Что вы меняете?
workloadsmemory - 56
Сорок нод входят в DiskPressure, потому что application logs занимают 85% ephemeral storage. Каков план containment?
- 57
API server отвечает 429 kubelets, пока CI-система отправляет 12 000 LIST requests в секунду. Как восстановиться?
system-designcontrol-planeapi - 58
После release validating webhook API p99 растёт со 180 мс до 2,5 секунды. Как доказать причину и откатить?
webhooksvalidation - 59
etcd занимает 7,6 GiB из quota 8 GiB, а write p99 равен 140 мс. В какой последовательности вы действуете?
control-plane - 60
CoreDNS достигает 70 000 запросов в секунду, а после mobile release 18% lookups получают timeout. Что вы делаете?
queries - 61
После upgrade Cilium на 20% нод cross-node packet loss достигает 5%, а same-node traffic остаётся здоровым. Что проверять и откатывать?
rollback - 62
Только 8 из 150 нод показывают нестабильные Service timeouts, а conntrack usage на них выше 95%. Как исправить?
resilience - 63
Во время распродажи 600 подов остаются Pending, но node autoscaler ничего не добавляет. Как за пять минут классифицировать blocker?
communicationscalingautoscaling - 64
У tenant CPU limit 4 cores, throttling 55% и нарушен latency SLO, хотя в кластере простаивают 300 cores. Как исправить?
sloclusterlatency - 65
Один tenant запрашивает 20 GiB, но использует 180 GiB, из-за чего evicted 90 подов других команд. Что делать сейчас и после recovery?
- 66
ML-команда отправляет 800 GPU Pods и вытесняет latency-sensitive inference service, которому нужны 40 GPU. Как восстановить priority?
latency - 67
Custom controller входит в retry loop и поднимает API traffic с 2 000 до 18 000 requests в секунду. Как безопасно его остановить?
zero-to-oneapiresilience - 68
Месячная стоимость кластера растёт со $180 000 до $310 000 за семь дней без роста трафика. Как найти и остановить рост?
cluster - 69
Karpenter consolidation экономит 28%, но заменяет 120 нод в день и повышает checkout errors во время drains. Что изменить?
autoscaling - 70
Spot capacity достигает 60% кластера, затем market interruption удаляет 25% нод за шесть минут. Как восстановиться и изменить mix?
capacitycluster - 71
После изменения topology cross-zone network charges растут на $90 000 в месяц. Как снизить их без концентрации реплик в одной зоне?
replication - 72
Аудит находит 600 unattached volumes и 90 unused load balancers стоимостью $42 000 в месяц. Как безопасно очистить их?
load-balancing - 73
Production Pod с доступом к 3 Secrets начинает майнить криптовалюту и отправлять трафик на неизвестный IP. Каковы первые действия containment?
workloadsconfigurationsecrets - 74
Пароль базы находился в centralized logs 36 часов, и его могли использовать 14 подов. Какое реагирование вы координируете?
databasepasswords - 75
Вы обнаружили, что 220 разработчиков могут создавать RoleBindings к cluster-admin. Что вы делаете в следующий час?
cluster - 76
Tetragon показывает privileged process, меняющий host files на одной ноде. Как работать с нодой и её 70 подами?
soft-skillsconcurrency - 77
Signed production image digest связан со скомпрометированным build runner и работает в 11 кластерах. Как реагировать?
cluster - 78
Falco сообщает о shell execution в 900 подах после легитимного rollout support tool. Как избежать alert blindness и 900 pages?
runtime-securityalerting - 79
Rollout default-deny NetworkPolicy блокирует payment traffic в 40 namespaces. Откатывать глобально?
namespaceskubernetes - 80
Release Kyverno отклоняет 40% Pod creates, а admission p99 достигает 900 мс. Как восстановить delivery?
workloads - 81
После upgrade canary-кластера 30 приложений падают, потому что deprecated API больше не serve-ится. Control plane нельзя downgrade. Что делать?
deployment-strategiescontrol-planecluster - 82
Новый node image приводит к сбою CNI initialization на 8% replacement nodes во время upgrade. Как откатить без исчерпания capacity?
capacitynetworkingrollback - 83
Во время CNI migration 5% canary Pods теряют DNS и egress. Как выбрать между repair и rollback?
dnsdeployment-strategiesnetworking - 84
CSI migration оставляет 12 из 200 StatefulSet Pods без возможности mount volumes. Каков rollback path?
migrationsrollbackworkloads - 85
Karpenter migration сокращает node cost на 22%, но удваивает Pending time до 140 секунд и нарушает scale-up SLO. Оставить её?
migrationssloautoscaling - 86
Cutover трафика в новый кластер повышает checkout errors с 0,3% до 2% уже на 25% traffic. Что откатить первым?
clusterrollback - 87
В shared-кластере на 120 команд за два месяца произошло три outage по вине tenant-ов. Делить кластер сейчас?
cluster - 88
Компания работает в трёх регионах, требует PCI isolation, а platform team состоит из шести человек. Сколько cluster classes вы будете поддерживать?
cluster - 89
80 сервисам нужен mTLS, но checkout path имеет всего 2 мс latency budget, а platform team состоит из четырёх инженеров. Разворачивать service mesh?
service-meshdeploymentlatency - 90
Rollout Istio добавляет 40 мс к checkout p99 и повышает memory подов на 18%. Как его откатить?
workloadsmemory - 91
Region с 40% traffic отказывает, а database replicas в backup region отстают на 90 секунд. Переключать writes?
databasereplicationbackups - 92
Emergency kubectl patch остановил outage, но Argo CD откатит его через три минуты. Что делать?
kubernetesgitopskubectl - 93
Platform team получает 180 pages в неделю, но действий требуют только 12. Что изменить первым?
- 94
Cluster outage затрагивает 45% клиентов, а за десять минут в call входят 18 инженеров. Как вы им командуете?
joinscluster - 95
Неудачный node rollout вызвал outage на 52 минуты, а первый review обвиняет инженера, нажавшего deploy. Как изменить разбор?
deployment - 96
Во время DNS incident middle-инженер хочет одновременно restart все CoreDNS Pods. Как менторить, не забирая управление?
mentoringincidentsdns - 97
Коллега предлагает удалить блокирующий PodDisruptionBudget, чтобы закончить upgrade 200 нод сегодня. Как вы принимаете решение?
soft-skills - 98
Два senior-инженера спорят о Cilium и Istio для mTLS в 70 сервисах, блокируя migration. Как разрешить спор?
conflictmigrationsmtls - 99
Один tenant трижды вызвал API saturation, создавая 25 000 Jobs в час. Informal warnings не помогли. Что enforce?
incidentsapi - 100
В квартале можно профинансировать self-service cluster upgrades или новую GPU platform. Upgrades тратят 220 engineer-hours в месяц и вызвали два outage, GPU нужна трём командам. Что выбрать?
cluster