DevOps и инфраструктура

Учебник Kubernetes для начинающих

40 уроков · 10 разделов · бесплатно, без регистрации

Kubernetes — система оркестрации контейнеров: она сама запускает, масштабирует, обновляет и восстанавливает приложения на кластере серверов. Этот курс рассчитан на тех, кто уже знаком с Docker и контейнерами, и ведёт от первой команды kubectl до деплоя реального трёхзвенного приложения. Вы разберёте архитектуру кластера, поды и Deployment, сеть и Service, конфигурацию через ConfigMap и Secret, постоянное хранилище, пробы здоровья, автомасштабирование и экосистему (Helm, мониторинг, managed-кластеры). Сквозная идея — декларативная модель и самовосстановление: вы описываете желаемое состояние, а кластер сам его поддерживает.

Курс «Kubernetes» состоит из 10 разделов и 40 уроков: Введение в Kubernetes, Поды и контролируемый запуск, Сеть и доступ, Конфигурация и данные, Эксплуатация и надёжность, Практика и экосистема, Рабочие нагрузки: StatefulSet, DaemonSet, Jobs, Сеть Kubernetes вглубь: Ingress, DNS, политики, Безопасность кластера и Эксплуатация и наблюдаемость. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Введение в Kubernetes

    1. Зачем нужен Kubernetes

      Какую проблему решает Kubernetes: оркестрация контейнеров, масштабирование и самовосстановление, когда Docker одного хоста уже не хватает.

    2. Архитектура кластера

      Из чего состоит кластер Kubernetes: control plane (API server, etcd, scheduler, controller manager) и worker-узлы с kubelet и kube-proxy.

    3. Локальный кластер: minikube и kind

      Как поднять локальный кластер Kubernetes для практики: minikube и kind, установка kubectl и первая проверка работоспособности.

    4. kubectl и декларативный подход

      Знакомство с kubectl и декларативной моделью Kubernetes: манифесты в YAML, kubectl apply, императивные команды и почему apply предпочтительнее.

  2. 2 Поды и контролируемый запуск

    1. Pod — минимальная единица

      Что такое Pod в Kubernetes: минимальная единица развёртывания, манифест пода, один и несколько контейнеров, паттерн sidecar.

    2. ReplicaSet: зачем нужны реплики

      ReplicaSet в Kubernetes: поддержание заданного числа одинаковых подов, селекторы по меткам и почему напрямую его не используют.

    3. Deployment: обновления и откаты

      Deployment в Kubernetes: декларативное управление репликами, rolling update без простоя, история ревизий и откат через kubectl rollout.

    4. Метки, селекторы и базовые команды kubectl

      Метки и селекторы в Kubernetes как механизм связывания объектов плюс основные команды kubectl: get, describe, logs, exec, delete.

  3. 3 Сеть и доступ

    1. Service: зачем он нужен

      Service в Kubernetes: стабильная точка доступа к эфемерным подам, балансировка по меткам и типы ClusterIP, NodePort, LoadBalancer.

    2. DNS и обнаружение сервисов

      Как поды находят друг друга в Kubernetes: встроенный DNS (CoreDNS), имена сервисов, FQDN и обращение между namespace.

    3. Ingress: маршрутизация HTTP

      Ingress в Kubernetes: единая точка входа для HTTP/HTTPS, маршрутизация по хостам и путям, роль Ingress-контроллера.

    4. port-forward и проверка доступа

      Проброс портов в Kubernetes через kubectl port-forward для отладки подов и сервисов без публикации наружу.

  4. 4 Конфигурация и данные

    1. ConfigMap: конфигурация отдельно от образа

      ConfigMap в Kubernetes: вынос конфигурации из образа, подключение как переменные окружения или файлы, обновление без пересборки.

    2. Secret: чувствительные данные

      Secret в Kubernetes: хранение паролей, токенов и ключей, base64-кодирование, подключение к подам и отличия от ConfigMap.

    3. Тома: PersistentVolume и PVC

      Постоянное хранилище в Kubernetes: проблема эфемерности подов, тома, PersistentVolume и PersistentVolumeClaim, StorageClass.

    4. StatefulSet кратко

      StatefulSet в Kubernetes: запуск приложений с состоянием, стабильные имена и хранилище подов, отличия от Deployment.

  5. 5 Эксплуатация и надёжность

    1. Пробы здоровья: liveness и readiness

      Пробы здоровья в Kubernetes: liveness-проба перезапускает зависшие контейнеры, readiness-проба убирает неготовые поды из балансировки.

    2. Ресурсы: requests и limits

      Управление ресурсами в Kubernetes: requests влияют на планирование, limits ограничивают потребление, единицы CPU и памяти, OOMKilled.

    3. Автомасштабирование и Namespaces

      HorizontalPodAutoscaler в Kubernetes для авто-масштабирования по нагрузке и Namespaces для логической изоляции ресурсов кластера.

    4. Самовосстановление: что происходит при падении

      Самовосстановление в Kubernetes: что происходит при падении контейнера, пода и целого узла, restartPolicy и reconciliation loop.

  6. 6 Практика и экосистема

    1. Деплой реального приложения

      Полный пример в Kubernetes: frontend, backend и база данных — разбор связанных манифестов Deployment, Service, ConfigMap и Secret.

    2. Обновления и откаты на практике

      Практика обновлений в Kubernetes: выкатка новой версии backend через rolling update, наблюдение за rollout и откат при ошибке.

    3. Helm: пакетный менеджер

      Helm в Kubernetes: чарты как пакеты приложений, шаблоны манифестов, values для параметров и установка готовых приложений из репозиториев.

    4. Экосистема: мониторинг, логи, managed-кластеры

      Экосистема Kubernetes: мониторинг (Prometheus/Grafana), централизованные логи, managed-кластеры EKS/GKE/AKS и куда двигаться дальше.

  7. 7 Рабочие нагрузки: StatefulSet, DaemonSet, Jobs

    1. StatefulSet: приложения с состоянием

      StatefulSet в Kubernetes: стабильная идентичность подов, упорядоченный запуск, привязка PVC через volumeClaimTemplates и headless-сервис для баз данных и кластеров.

    2. DaemonSet: агент на каждом узле

      DaemonSet в Kubernetes: по одному поду на каждом узле для сбора логов, метрик и сетевых плагинов, автоматическое размещение на новых узлах и отличие от Deployment.

    3. Job и CronJob: разовые и периодические задачи

      Job и CronJob в Kubernetes: batch-задачи до завершения, параллелизм через completions и parallelism, запуск по cron-расписанию и контроль перекрытия запусков concurrencyPolicy.

    4. Стратегии обновления и откат

      Стратегии обновления Deployment в Kubernetes: RollingUpdate против Recreate, настройка maxSurge и maxUnavailable, blue-green и canary концептуально, откат через kubectl rollout undo.

  8. 8 Сеть Kubernetes вглубь: Ingress, DNS, политики

    1. Ingress: HTTP-маршрутизация снаружи

      Ingress в Kubernetes: один вход вместо кучи LoadBalancer, ingress controller (nginx), правила хостов и путей, TLS-терминация.

    2. DNS и обнаружение сервисов

      Кластерный DNS Kubernetes: CoreDNS, имена вида service.namespace.svc.cluster.local, headless service и как поды находят друг друга.

    3. NetworkPolicy: изоляция трафика

      NetworkPolicy в Kubernetes: по умолчанию весь трафик разрешён; правила ingress/egress, изоляция namespace и zero-trust подход к сети.

    4. CNI и service mesh (обзор)

      Обзор сетевого слоя Kubernetes: зачем нужен CNI-плагин, как устроена pod-сеть, и что добавляет service mesh — Istio/Linkerd, mTLS, наблюдаемость.

  9. 9 Безопасность кластера

    1. RBAC: кто что может

      RBAC в Kubernetes: Role и ClusterRole, RoleBinding и ClusterRoleBinding, ServiceAccount, принцип минимальных привилегий и проверка прав через kubectl auth can-i.

    2. Безопасность подов: securityContext

      Защита подов в Kubernetes: securityContext, runAsNonRoot и readOnlyRootFilesystem, drop capabilities, Pod Security Standards и Pod Security Admission, запрет привилегированных подов.

    3. Управление секретами

      Секреты в Kubernetes: почему Secret не шифрует, а только кодирует в base64, шифрование etcd at-rest, external secrets, запрет коммита секретов и безопасное монтирование.

    4. Admission-контроль и безопасность образов

      Admission controllers в Kubernetes, policy-движки OPA/Gatekeeper и Kyverno, проверка образов и подписей, запрет тега latest и сканирование уязвимостей — оборонительно.

  10. 10 Эксплуатация и наблюдаемость

    1. Автомасштабирование: HPA, VPA, Cluster Autoscaler

      Три уровня автомасштабирования Kubernetes: HPA по CPU/памяти и кастомным метрикам, metrics-server, VPA для подбора requests и Cluster Autoscaler для узлов. Формула HPA, грабли и связки.

    2. Ресурсы, лимиты и QoS

      Глубоко про ресурсы Kubernetes: разница requests и limits, классы QoS Guaranteed/Burstable/BestEffort, причина OOMKilled и CPU-троттлинга, ResourceQuota и LimitRange на namespace.

    3. Наблюдаемость и диагностика

      Наблюдаемость Kubernetes: метрики через Prometheus и Grafana, сбор логов, события и kubectl describe/logs/events, пошаговая отладка пода в CrashLoopBackOff и ImagePullBackOff.

    4. Helm и GitOps

      Helm вглубь: структура чарта, values и шаблоны Go, релизы и откаты. GitOps-подход с ArgoCD и Flux: кластер синхронизируется с git как источником истины, pull-модель CD и дрифт.