Docker Kubernetes
24 питань і відповідей у розділі Docker Kubernetes.
Питання цього розділу
- Що таке контейнеризація і навіщо вона потрібна?
- В чому відмінність контейнера від віртуальної машини?
- Що таке Dockerfile?
- Які основні інструкції використовуються в Dockerfile?
- В чому різниця між CMD та ENTRYPOINT?
- Що таке multi-stage build?
- Що таке Docker Compose?
- Що таке Kubernetes і навіщо він потрібен?
- Що таке Pod в Kubernetes?
- Що таке Node в Kubernetes?
- Що таке Service в Kubernetes?
- Які типи Service існують (ClusterIP, NodePort, LoadBalancer)?
- Що таке ReplicaSet?
- Як відбувається масштабування в Kubernetes?
- Що таке HorizontalPodAutoscaler (HPA)?
- В чому різниця між ConfigMap та Secret?
- Що таке liveness probe?
- Що таке Readiness Probe?
- Навіщо потрібні Health Checks в Kubernetes?
- Що таке Ingress в Kubernetes?
- Що таке Namespace в Kubernetes?
- Як організувати Rolling Update в Kubernetes?
- Що таке StatefulSet і коли його використовувати?
- Як моніторити додатки в Kubernetes?
Навігатор по розділу
24 питання для підготовки до співбесіди на Middle Java Developer.
📋 Усі питання
🗺️ Карта залежностей тем
┌──────────────────────────────────────────┐
│ DOCKER ОСНОВИ (1-7) │
│ 1. Контейнеризація │
│ 2. Контейнер vs ВМ │
│ 3. Dockerfile │
│ 4. Інструкції Dockerfile │
│ 5. CMD vs ENTRYPOINT │
│ 6. Multi-stage build │
│ 7. Docker Compose │
└──────────────────┬───────────────────────┘
│
┌──────────────────────────┼──────────────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌────────────────────┐
│ K8s ОСНОВИ │ │ K8s МЕРЕЖА │ │ K8s МАСШТАБУВАННЯ │
│ (8-13) │ │ (11-12, 20) │ │ (14-15, 22) │
│ 8. K8s огляд │ │ 11. Service │ │ 14. Масштабув. │
│ 9. Pod │ │ 12. Типи Svc │ │ 15. HPA │
│ 10. Node │ │ 20. Ingress │ │ 22. Rolling update │
│ 13. ReplicaSet │ │ │ │ │
└───────┬───────┘ └───────┬───────┘ └────────┬───────────┘
│ │ │
└────────────────────────┼────────────────────────┘
▼
┌──────────────────────────────────────────┐
│ K8s КОНФІГ І ЗДОРОВ'Я (16-21) │
│ 16. ConfigMap vs Secret │
│ 17. Liveness probe │
│ 18. Readiness probe │
│ 19. Health checks │
│ 21. Namespace │
└──────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────┐
│ STATEFUL І МОНІТОРИНГ (23-24) │
│ 23. StatefulSet │
│ 24. Моніторинг │
└──────────────────────────────────────────┘
🎯 Рекомендований порядок вивчення
🟢 Рівень Junior (тижні 1-2)
| Крок | Тема | Файли | Мета |
|---|---|---|---|
| 1 | Docker база | Q1, Q2, Q3 | Контейнер vs ВМ, Dockerfile |
| 2 | Dockerfile інструкції | Q4, Q5 | RUN/COPY/ADD, CMD vs ENTRYPOINT |
| 3 | Multi-stage і Compose | Q6, Q7 | Маленькі образи, багатоконтейнерна розробка |
| 4 | K8s база | Q8, Q9, Q10 | Оркестратор, Pod, Node |
| 5 | Service і Config | Q11, Q16 | Стабільна адреса, ConfigMap vs Secret |
🟡 Рівень Middle (тижні 3-4)
| Крок | Тема | Файли | Мета |
|---|---|---|---|
| 1 | Service types | Q12 | ClusterIP, NodePort, LoadBalancer |
| 2 | ReplicaSet і Deployment | Q13 | Desired state, self-healing |
| 3 | Health checks | Q17, Q18, Q19 | Liveness, readiness, startup |
| 4 | Ingress і Namespace | Q20, Q21 | L7 маршрутизація, логічна ізоляція |
| 5 | Rolling update | Q22 | Zero-downtime deploy |
🔴 Рівень Senior (тижні 5-6)
| Крок | Тема | Файли | Мета |
|---|---|---|---|
| 1 | HPA deep dive | Q15 | Formula, stabilizationWindow, custom metrics |
| 2 | StatefulSet | Q23 | Stable identity, ordered updates, headless service |
| 3 | Monitoring | Q24 | Prometheus, Grafana, ELK, distributed tracing |
| 4 | Scaling strategies | Q14, Q15, Q22 | HPA + VPA + Cluster Autoscaler |
🔗 Ключові зв’язки між темами
Тема: Docker
Q1 (Контейнеризація) → Q2 (Контейнер vs ВМ) → Q3 (Dockerfile)
↓
Q4 (Інструкції) → Q5 (CMD vs ENTRYPOINT) → Q6 (Multi-stage) → Q7 (Compose)
Тема: K8s Основи
Q8 (K8s огляд) → Q9 (Pod) → Q10 (Node) → Q13 (ReplicaSet)
Ключові зв’язки:
- Q9 ↔ Q13: Pod’и керуються через ReplicaSet (який створюється Deployment)
- Q10 ↔ Q9: Node — сервер, на якому запускаються Pod’и
Тема: Мережа
Q11 (Service) → Q12 (Типи Service) → Q20 (Ingress)
Ключові зв’язки:
- Q11 ↔ Q12: Service — абстракція, типи — конкретні реалізації
- Q12 ↔ Q20: LoadBalancer (L4) vs Ingress (L7) — різні рівні
Тема: Конфігурація і здоров’я
Q16 (ConfigMap/Secret) → Q17 (Liveness) → Q18 (Readiness) → Q19 (Health checks)
Тема: Масштабування
Q14 (Масштабування) → Q15 (HPA) → Q22 (Rolling update)
🎓 Шпаргалка: що знати для кожного рівня
🟢 Junior
- Контейнер = процес Linux, ВМ = повноцінна ОС
- Dockerfile: FROM, RUN, COPY, CMD, ENTRYPOINT
- CMD можна перевизначити при запуску, ENTRYPOINT — ні (але можна додати аргументи)
- Pod = мінімальна одиниця в K8s, зазвичай 1 контейнер
- Service = стабільна адреса для групи Pod’ів
- ConfigMap = конфіги, Secret = секрети (base64, НЕ шифрування!)
🟡 Middle
- Multi-stage build: тільки останній FROM у фінальному образі
- ReplicaSet створюється Deployment’ом, напряму не використовується
- Liveness probe → перезапуск, Readiness probe → прибрати з балансування
- ClusterIP (внутрішній), NodePort (порт на Node), LoadBalancer (хмарний LB)
- Ingress = L7 маршрутизатор, потребує Ingress Controller
- Rolling update: maxUnavailable + maxSurge контролюють процес
🔴 Senior
- HPA formula: desiredReplicas = ceil(current * (currentMetric / desiredMetric))
- stabilizationWindow запобігає flapping
- StatefulSet: stable identity (web-0, web-1), ordered updates, headless service
- Secrets в etcd без EncryptionConfiguration = відкритий текст
- Prometheus: pull-model, local storage 15-30 днів, Thanos для long-term
- Gateway API (GA v1.28) поступово замінює Ingress
📝 Формат кожного файлу
Кожен файл містить:
- 🟢 Junior Level — базове розуміння, прості аналогії, приклади
- 🟡 Middle Level — нутрощі, типові помилки, практичні приклади
- 🔴 Senior Level — deep dive, edge cases, production досвід, моніторинг
- 🎯 Шпаргалка для інтерв’ю — ключові тези, часті питання, червоні прапорці, пов’язані теми