DevOps співбесіда: Docker, K8s, AWS — що питають у 2026
Розбираємо найпопулярніші питання на DevOps-співбесідах: контейнеризація, оркестрація, хмарні сервіси, CI/CD, моніторинг та безпека. ~20 питань з детальними відповідями українською.
🐳 Docker (контейнеризація)
1. Чим Docker-контейнер відрізняється від віртуальної машини?
Контейнер використовує ядро хост-системи і ізолює процеси через namespaces та cgroups. VM запускає повну гостьову ОС з власним ядром через гіпервізор. Контейнери легші (МБ замість ГБ), стартують за секунди і споживають менше ресурсів. VM забезпечують сильнішу ізоляцію — тому для multi-tenant середовищ іноді обирають саме їх.
💡 Порада: згадайте namespaces (PID, NET, MNT) та cgroups — це покаже глибину знань.
2. Як оптимізувати розмір Docker-образу?
Використовуйте multi-stage builds: у першому етапі компілюєте, у фінальному — тільки runtime та артефакт. Обирайте мінімальні базові образи (Alpine, distroless). Об'єднуйте RUN-команди щоб зменшити кількість шарів. Додавайте .dockerignore щоб не копіювати node_modules, .git тощо. Різниця може бути 10x — образ з 1.2 ГБ стискається до 80-120 МБ.
3. Що таке Docker-мережі і які типи існують?
bridge — дефолтна мережа, контейнери на одному хості спілкуються між собою. host — контейнер використовує мережу хоста напряму (без NAT, максимальна продуктивність). overlay — для Swarm/multi-host, контейнери на різних нодах бачать один одного. none — повна ізоляція. У Kubernetes зазвичай мережу забезпечує CNI-плагін (Calico, Flannel, Cilium).
☸️ Kubernetes (оркестрація)
4. Поясніть архітектуру Kubernetes-кластера.
Control Plane: API Server (вхідна точка для всіх операцій), etcd (розподілене key-value сховище стану), Scheduler (розподіляє поди по нодах), Controller Manager (слідкує за desired state). Worker Nodes: kubelet (агент, запускає контейнери), kube-proxy (мережеві правила, iptables/IPVS), Container Runtime (containerd/CRI-O). Вся взаємодія — через API Server, декларативно.
5. Різниця між Deployment, StatefulSet та DaemonSet?
Deployment — для stateless-сервісів, поди взаємозамінні, rolling update з нульовим даунтаймом. StatefulSet — для stateful (бази даних, Kafka): стабільні імена (pod-0, pod-1), Persistent Volumes прив'язані до конкретних подів, порядковий запуск. DaemonSet — по одному поду на кожну ноду (агенти моніторингу, log collectors, CNI-плагіни).
6. Як працюють Liveness, Readiness та Startup Probes?
Liveness — перевіряє чи процес живий; якщо ні — kubelet перезапускає контейнер. Readiness — визначає чи под готовий приймати трафік; поки не пройде — Service не направляє запити. Startup — для повільних додатків, поки не пройде — інші проби не запускаються. Типи: HTTP GET, TCP Socket, exec command. Завжди встановлюйте initialDelaySeconds щоб дати додатку стартувати.
☁️ AWS/Cloud (хмарні сервіси)
7. Як працює мережа у AWS VPC?
VPC — ізольована віртуальна мережа з власним CIDR-блоком. Всередині — підмережі (public з Internet Gateway, private з NAT Gateway). Route Tables визначають маршрутизацію, Security Groups (stateful firewall на рівні інстансу) та NACLs (stateless на рівні підмережі) контролюють доступ. Для з'єднання VPC між собою — VPC Peering або Transit Gateway.
8. Коли обирати ECS vs EKS?
ECS — рідний AWS-сервіс для контейнерів, простіший у налаштуванні, тісно інтегрований з IAM, ALB, CloudWatch. Підходить, коли вся інфраструктура в AWS і не потрібна портабельність. EKS — managed Kubernetes, обирають коли потрібна сумісність з K8s-екосистемою, multi-cloud стратегія або вже є K8s-експертиза. EKS дорожчий ($0.10/год за control plane), але гнучкіший.
9. Що таке IAM Roles та як працює least privilege?
IAM Role — набір permissions без постійних credentials; сервіси/поди «assume» роль і отримують тимчасові токени через STS. Least privilege: починайте з нуля прав і додавайте тільки необхідні. Використовуйте IAM Access Analyzer для аудиту. Для EKS — IRSA (IAM Roles for Service Accounts), щоб кожен мікросервіс мав свою роль, а не shared node role.
🔄 CI/CD (автоматизація)
10. Чим відрізняється Continuous Integration від Continuous Deployment?
CI — автоматична збірка + тести при кожному коміті/PR. Мета: рано виявити баги, тримати main branch стабільним. CD (Delivery) — артефакт автоматично готовий до деплою, але реліз потребує ручного підтвердження. CD (Deployment) — повна автоматизація до продакшену. Більшість команд працюють з Delivery, а повний Deployment вимагає зрілих тестів та feature flags.
11. Як реалізувати blue/green та canary deployments?
Blue/Green: дві ідентичні середовища; нова версія деплоїться в «green», після перевірки трафік перемикається. Відкат миттєвий — повертаємо трафік на «blue». Canary: нова версія отримує 5-10% трафіку, моніторимо метрики (error rate, latency), поступово збільшуємо до 100%. У K8s: Argo Rollouts або Istio/Linkerd для traffic splitting.
12. Як безпечно зберігати секрети в CI/CD?
Ніколи не хардкодьте в код або Dockerfile. Використовуйте: Vault (HashiCorp) для централізованого управління, AWS Secrets Manager / Parameter Store, GitHub Actions Secrets (encrypted at rest). У K8s — External Secrets Operator синхронізує з Vault/AWS. Ротація секретів — автоматична. Аудит доступу — обов'язковий.
🐧 Linux та мережі
13. Як діагностувати високий load average на сервері?
Load average показує кількість процесів у чергах run + wait. Кроки: top/htop — хто їсть CPU; iostat — disk I/O bottleneck; vmstat — swap, context switches; dmesg — OOM killer. Якщо load > кількість CPU-ядер — система перевантажена. Часті причини: IO-wait (повільний диск), runaway процес, memory pressure → swapping.
14. Поясніть різницю між TCP та UDP.
TCP — connection-oriented, гарантує доставку (ACK, retransmission), порядок пакетів, flow/congestion control. Використовується для HTTP, SSH, DB connections. UDP — connectionless, не гарантує доставку, але швидший і з меншим overhead. Для DNS, VoIP, відео-стрімінгу, ігор. У DevOps-контексті: health checks зазвичай TCP, а DNS-резолвінг — UDP (port 53).
15. Як працюють file permissions у Linux?
Три рівні: owner, group, others. Три типи: read (4), write (2), execute (1). chmod 755 = rwxr-xr-x. Спеціальні біти: SUID (виконується з правами власника), SGID (наслідує групу директорії), Sticky bit (тільки власник видаляє файли, як /tmp). Для DevOps критично: Docker-контейнери не повинні працювати від root — використовуйте USER в Dockerfile.
📊 Моніторинг та логування
16. Як побудувати стек моніторингу для K8s?
Стандартний стек: Prometheus (збір метрик, PromQL) + Grafana (візуалізація, дашборди) + Alertmanager (алерти в Slack/PagerDuty). Для логів: Loki або EFK-стек (Elasticsearch + Fluentd + Kibana). Для трейсингу: Jaeger або Tempo. OpenTelemetry — єдиний стандарт для метрик, логів і трейсів. Встановлюйте через kube-prometheus-stack Helm chart.
17. Які ключові метрики SRE повинен моніторити?
Google SRE «чотири золотих сигнали»: Latency (час відповіді, p50/p95/p99), Traffic (RPS, QPS), Errors (5xx rate, failed requests), Saturation (CPU, RAM, disk, connections). Додатково: SLI/SLO/SLA — наприклад, SLO: 99.9% запитів < 200ms. Error budget = 100% - SLO — коли вичерпаний, зупиняємо релізи і фіксимо надійність.
18. Як правильно організувати логування?
Логи мають бути структурованими (JSON), з полями: timestamp, level, service, trace_id, message. Рівні: DEBUG, INFO, WARN, ERROR. У K8s контейнери пишуть в stdout/stderr, а Fluentd/Fluent Bit збирає і відправляє в Loki/Elasticsearch. Retention policy: гарячі дані 7-30 днів, архів у S3. Не логуйте PII та секрети — це compliance-ризик (GDPR).
🔒 Безпека (DevSecOps)
19. Як забезпечити безпеку Docker-образів?
Скануйте образи на вразливості: Trivy, Snyk, Grype — інтегруйте в CI pipeline. Використовуйте мінімальні базові образи (distroless, Alpine). Не запускайте контейнери від root — додайте USER nonroot. Підписуйте образи через Cosign/Sigstore. Встановіть Pod Security Standards (restricted) у K8s. Регулярно оновлюйте базові образи — автоматизуйте через Renovate/Dependabot.
20. Що таке Network Policies у Kubernetes?
Network Policies — L3/L4 firewall-правила для подів. За замовчуванням у K8s весь трафік дозволений (flat network). Network Policy обмежує ingress/egress на основі labels, namespaces, IP-блоків. Приклад: дозволити трафік до бази даних тільки з backend-подів. Потрібен CNI з підтримкою (Calico, Cilium). Best practice: default-deny all, потім відкривайте тільки необхідне.
Готовий до DevOps-співбесіди?
Наш Telegram-бот симулює реальні технічні співбесіди з адаптивною складністю. Docker, Kubernetes, AWS, CI/CD — всі теми. Миттєвий фідбек та детальний звіт.
🚀 Почати тренуванняБезкоштовно · 5 інтерв'ю без оплати