Учебник Kubernetes для начинающих
Kubernetes — система оркестрации контейнеров: она сама запускает, масштабирует, обновляет и восстанавливает приложения на кластере серверов. Этот курс рассчитан на тех, кто уже знаком с Docker и контейнерами, и ведёт от первой команды kubectl до деплоя реального трёхзвенного приложения. Вы разберёте архитектуру кластера, поды и Deployment, сеть и Service, конфигурацию через ConfigMap и Secret, постоянное хранилище, пробы здоровья, автомасштабирование и экосистему (Helm, мониторинг, managed-кластеры). Сквозная идея — декларативная модель и самовосстановление: вы описываете желаемое состояние, а кластер сам его поддерживает.
Курс «Kubernetes» состоит из 10 разделов и 40 уроков: Введение в Kubernetes, Поды и контролируемый запуск, Сеть и доступ, Конфигурация и данные, Эксплуатация и надёжность, Практика и экосистема, Рабочие нагрузки: StatefulSet, DaemonSet, Jobs, Сеть Kubernetes вглубь: Ingress, DNS, политики, Безопасность кластера и Эксплуатация и наблюдаемость. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение в Kubernetes
- Зачем нужен Kubernetes
Какую проблему решает Kubernetes: оркестрация контейнеров, масштабирование и самовосстановление, когда Docker одного хоста уже не хватает.
- Архитектура кластера
Из чего состоит кластер Kubernetes: control plane (API server, etcd, scheduler, controller manager) и worker-узлы с kubelet и kube-proxy.
- Локальный кластер: minikube и kind
Как поднять локальный кластер Kubernetes для практики: minikube и kind, установка kubectl и первая проверка работоспособности.
- kubectl и декларативный подход
Знакомство с kubectl и декларативной моделью Kubernetes: манифесты в YAML, kubectl apply, императивные команды и почему apply предпочтительнее.
- Зачем нужен Kubernetes
2 Поды и контролируемый запуск
- Pod — минимальная единица
Что такое Pod в Kubernetes: минимальная единица развёртывания, манифест пода, один и несколько контейнеров, паттерн sidecar.
- ReplicaSet: зачем нужны реплики
ReplicaSet в Kubernetes: поддержание заданного числа одинаковых подов, селекторы по меткам и почему напрямую его не используют.
- Deployment: обновления и откаты
Deployment в Kubernetes: декларативное управление репликами, rolling update без простоя, история ревизий и откат через kubectl rollout.
- Метки, селекторы и базовые команды kubectl
Метки и селекторы в Kubernetes как механизм связывания объектов плюс основные команды kubectl: get, describe, logs, exec, delete.
- Pod — минимальная единица
3 Сеть и доступ
- Service: зачем он нужен
Service в Kubernetes: стабильная точка доступа к эфемерным подам, балансировка по меткам и типы ClusterIP, NodePort, LoadBalancer.
- DNS и обнаружение сервисов
Как поды находят друг друга в Kubernetes: встроенный DNS (CoreDNS), имена сервисов, FQDN и обращение между namespace.
- Ingress: маршрутизация HTTP
Ingress в Kubernetes: единая точка входа для HTTP/HTTPS, маршрутизация по хостам и путям, роль Ingress-контроллера.
- port-forward и проверка доступа
Проброс портов в Kubernetes через kubectl port-forward для отладки подов и сервисов без публикации наружу.
- Service: зачем он нужен
4 Конфигурация и данные
- ConfigMap: конфигурация отдельно от образа
ConfigMap в Kubernetes: вынос конфигурации из образа, подключение как переменные окружения или файлы, обновление без пересборки.
- Secret: чувствительные данные
Secret в Kubernetes: хранение паролей, токенов и ключей, base64-кодирование, подключение к подам и отличия от ConfigMap.
- Тома: PersistentVolume и PVC
Постоянное хранилище в Kubernetes: проблема эфемерности подов, тома, PersistentVolume и PersistentVolumeClaim, StorageClass.
- StatefulSet кратко
StatefulSet в Kubernetes: запуск приложений с состоянием, стабильные имена и хранилище подов, отличия от Deployment.
- ConfigMap: конфигурация отдельно от образа
5 Эксплуатация и надёжность
- Пробы здоровья: liveness и readiness
Пробы здоровья в Kubernetes: liveness-проба перезапускает зависшие контейнеры, readiness-проба убирает неготовые поды из балансировки.
- Ресурсы: requests и limits
Управление ресурсами в Kubernetes: requests влияют на планирование, limits ограничивают потребление, единицы CPU и памяти, OOMKilled.
- Автомасштабирование и Namespaces
HorizontalPodAutoscaler в Kubernetes для авто-масштабирования по нагрузке и Namespaces для логической изоляции ресурсов кластера.
- Самовосстановление: что происходит при падении
Самовосстановление в Kubernetes: что происходит при падении контейнера, пода и целого узла, restartPolicy и reconciliation loop.
- Пробы здоровья: liveness и readiness
6 Практика и экосистема
- Деплой реального приложения
Полный пример в Kubernetes: frontend, backend и база данных — разбор связанных манифестов Deployment, Service, ConfigMap и Secret.
- Обновления и откаты на практике
Практика обновлений в Kubernetes: выкатка новой версии backend через rolling update, наблюдение за rollout и откат при ошибке.
- Helm: пакетный менеджер
Helm в Kubernetes: чарты как пакеты приложений, шаблоны манифестов, values для параметров и установка готовых приложений из репозиториев.
- Экосистема: мониторинг, логи, managed-кластеры
Экосистема Kubernetes: мониторинг (Prometheus/Grafana), централизованные логи, managed-кластеры EKS/GKE/AKS и куда двигаться дальше.
- Деплой реального приложения
7 Рабочие нагрузки: StatefulSet, DaemonSet, Jobs
- StatefulSet: приложения с состоянием
StatefulSet в Kubernetes: стабильная идентичность подов, упорядоченный запуск, привязка PVC через volumeClaimTemplates и headless-сервис для баз данных и кластеров.
- DaemonSet: агент на каждом узле
DaemonSet в Kubernetes: по одному поду на каждом узле для сбора логов, метрик и сетевых плагинов, автоматическое размещение на новых узлах и отличие от Deployment.
- Job и CronJob: разовые и периодические задачи
Job и CronJob в Kubernetes: batch-задачи до завершения, параллелизм через completions и parallelism, запуск по cron-расписанию и контроль перекрытия запусков concurrencyPolicy.
- Стратегии обновления и откат
Стратегии обновления Deployment в Kubernetes: RollingUpdate против Recreate, настройка maxSurge и maxUnavailable, blue-green и canary концептуально, откат через kubectl rollout undo.
- StatefulSet: приложения с состоянием
8 Сеть Kubernetes вглубь: Ingress, DNS, политики
- Ingress: HTTP-маршрутизация снаружи
Ingress в Kubernetes: один вход вместо кучи LoadBalancer, ingress controller (nginx), правила хостов и путей, TLS-терминация.
- DNS и обнаружение сервисов
Кластерный DNS Kubernetes: CoreDNS, имена вида service.namespace.svc.cluster.local, headless service и как поды находят друг друга.
- NetworkPolicy: изоляция трафика
NetworkPolicy в Kubernetes: по умолчанию весь трафик разрешён; правила ingress/egress, изоляция namespace и zero-trust подход к сети.
- CNI и service mesh (обзор)
Обзор сетевого слоя Kubernetes: зачем нужен CNI-плагин, как устроена pod-сеть, и что добавляет service mesh — Istio/Linkerd, mTLS, наблюдаемость.
- Ingress: HTTP-маршрутизация снаружи
9 Безопасность кластера
- RBAC: кто что может
RBAC в Kubernetes: Role и ClusterRole, RoleBinding и ClusterRoleBinding, ServiceAccount, принцип минимальных привилегий и проверка прав через kubectl auth can-i.
- Безопасность подов: securityContext
Защита подов в Kubernetes: securityContext, runAsNonRoot и readOnlyRootFilesystem, drop capabilities, Pod Security Standards и Pod Security Admission, запрет привилегированных подов.
- Управление секретами
Секреты в Kubernetes: почему Secret не шифрует, а только кодирует в base64, шифрование etcd at-rest, external secrets, запрет коммита секретов и безопасное монтирование.
- Admission-контроль и безопасность образов
Admission controllers в Kubernetes, policy-движки OPA/Gatekeeper и Kyverno, проверка образов и подписей, запрет тега latest и сканирование уязвимостей — оборонительно.
- RBAC: кто что может
10 Эксплуатация и наблюдаемость
- Автомасштабирование: HPA, VPA, Cluster Autoscaler
Три уровня автомасштабирования Kubernetes: HPA по CPU/памяти и кастомным метрикам, metrics-server, VPA для подбора requests и Cluster Autoscaler для узлов. Формула HPA, грабли и связки.
- Ресурсы, лимиты и QoS
Глубоко про ресурсы Kubernetes: разница requests и limits, классы QoS Guaranteed/Burstable/BestEffort, причина OOMKilled и CPU-троттлинга, ResourceQuota и LimitRange на namespace.
- Наблюдаемость и диагностика
Наблюдаемость Kubernetes: метрики через Prometheus и Grafana, сбор логов, события и kubectl describe/logs/events, пошаговая отладка пода в CrashLoopBackOff и ImagePullBackOff.
- Helm и GitOps
Helm вглубь: структура чарта, values и шаблоны Go, релизы и откаты. GitOps-подход с ArgoCD и Flux: кластер синхронизируется с git как источником истины, pull-модель CD и дрифт.
- Автомасштабирование: HPA, VPA, Cluster Autoscaler