> Насколько знаком с Kubernetes на уровне пользователя (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Альфа-банк
Стек: Go
> Пример ответа
Короткий ответ
На уровне пользователя Kubernetes я уверенно работаю с kubectl, манифестами, Helm-чартами и отладкой подов. Знаю устройство объектов: Deployment, Service, ConfigMap, Secret, Ingress, PVC. Понимаю, как устроены namespace, labels, selectors, probes, resource requests/limits. Умею работать с логами, exec, port-forward, описывать проблемы и находить их причины через describe, events, kubectl get. Хватает знаний для самостоятельной эксплуатации сервисов в кластере и взаимодействия с DevOps.
Подробное объяснение
На уровне пользователя Kubernetes - это уверенное владение ежедневными операциями без глубокого погружения во внутренности control plane. Я знаю:
- Основные объекты: Pod, Deployment, StatefulSet, DaemonSet, Job, CronJob, Service (ClusterIP, NodePort, LoadBalancer), Ingress, ConfigMap, Secret, PVC/PV, Namespace, ResourceQuota, LimitRange.
- Рабочий процесс: создание и обновление манифестов, rolling update, rollback, масштабирование (replicas, HPA), стратегии деплоя (Recreate, RollingUpdate).
- Сеть: как Service проксирует трафик, headless services, Ingress-контроллеры, NetworkPolicy на базовом уровне.
- Хранилище: динамическое выделение PVC, StorageClass, access modes.
- Конфигурация: ConfigMap и Secret, их монтирование, env, immutable.
- Наблюдаемость: логи (kubectl logs, --previous), события, describe, top, metrics-server, базовые дашборды.
- Безопасность на уровне пользователя: service accounts, RBAC (роли, binding), imagePullSecrets, private registry.
- Helm: создание и использование чартов, values, dependency, upgrade, rollback.
- Kustomize: базовые overlay, patches.
На практике
В повседневной работе я:
- Пишу и ревьюю манифесты, следую best practices: liveness/readiness probes, resource requests/limits, pod anti-affinity, topology spread constraints.
- Использую kubectl с плагинами (kubectl-neat, krew), работаю с несколькими контекстами.
- Отлаживаю проблемы: pod в CrashLoopBackOff, ImagePullBackOff, pending из-за ресурсов или PVC, проблемы с DNS, network policy, ingress routing.
- Работаю с Helm-чартами для деплоя сервисов, управляю values для разных окружений.
- Настраиваю горизонтальное масштабирование через HPA на основе метрик CPU/memory и кастомных метрик.
- Взаимодействую с CI/CD: собираю образ, пуша в registry, обновляю deployment через kubectl set image или helm upgrade.
- Использую port-forward для локальной отладки, exec для диагностики, логи с follow и tail.
Пример кода
YAMLapiVersion: apps/v1kind: Deploymentmetadata:name: apinamespace: productionspec:replicas: 3strategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1maxSurge: 1selector:matchLabels:app: apitemplate:metadata:labels:app: apispec:containers:- name: apiimage: registry.example.com/api:1.4.2ports:- containerPort: 8080envFrom:- configMapRef:name: api-config- secretRef:name: api-secretsresources:requests:cpu: 100mmemory: 128Milimits:cpu: 500mmemory: 512MilivenessProbe:httpGet:path: /healthzport: 8080initialDelaySeconds: 10periodSeconds: 10readinessProbe:httpGet:path: /readyport: 8080initialDelaySeconds: 5periodSeconds: 5
BASH# отладкаkubectl get events --sort-by=.lastTimestampkubectl describe pod api-7d8f9c5d6-abc12kubectl logs deployment/api --tail=100 -fkubectl exec -it deploy/api -- sh# обновлениеkubectl set image deployment/api api=registry.example.com/api:1.5.0kubectl rollout status deployment/apikubectl rollout undo deployment/api
Как отвечать на собеседовании
- Начни с уровня: "уверенный пользователь, не админ кластера".
- Перечисли конкретные объекты и операции, с которыми работал ежедневно.
- Приведи реальный пример: как деплоил сервис, отлаживал проблему, настраивал HPA.
- Упомяни Helm и Kustomize, если использовал - это плюс.
- Покажи понимание trade-off: requests vs limits, readiness vs liveness, replicas vs HPA.
- Если спрашивают про внутренности - честно скажи, что это зона ответственности DevOps/SRE, но базовое понимание control plane есть.
- Не углубляйся в детали etcd, scheduler, kubelet, если не просят - это уровень администратора.
Что проверяет интервьюер
- Реальный опыт, а не заученные определения.
- Умение диагностировать типовые проблемы.
- Понимание жизненного цикла подов и деплойментов.
- Знание best practices по ресурсам, probes, безопасности.
- Способность говорить на одном языке с DevOps.
- Уровень самостоятельности: сможет ли кандидат развернуть и поддерживать сервис в кластере без постоянной помощи.
Типичные ошибки
- Путаница между liveness и readiness - частая ошибка.
- Непонимание разницы между ClusterIP, NodePort и LoadBalancer.
- Утверждение, что PVC можно использовать без StorageClass.
- Незнание, как посмотреть логи предыдущего пода (--previous).
- Уверенность, что kubectl apply всегда безопасен - незнание про conflicts и last-applied-configuration.
- Игнорирование resource requests/limits - "и так работает".
- Непонимание, что HPA не работает без metrics-server.
- Слишком глубокий уход в администрирование кластера, когда спрашивают про пользовательский уровень - это выглядит как заученность.
> Похожие задачи по Go
Как передать данные от одного сервиса к множеству читателей с брокером сообщений
Что такое consumer group в брокерах сообщений
Как обеспечить идемпотентность запросов на создание виртуальных машин
Что делать первым шагом внутри сервиса создания виртуальной машины
> Похожие задачи по backend
Как передать данные от одного сервиса к множеству читателей с брокером сообщений
Что такое consumer group в брокерах сообщений
Как обеспечить идемпотентность запросов на создание виртуальных машин
Что делать первым шагом внутри сервиса создания виртуальной машины
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью