• требования к тестовому стенду и железу - минимальные и оптимальные;
  • рекомендации по работе со снапшотами виртуальных машин;
  • минимальная квалификация слушателя (знания и навыки).

Подробные инструкции по развёртыванию стендов находятся в материалах соответствующих курсов. Документ носит обзорный характер: если между ним и материалами курса обнаружится расхождение, приоритет у материалов курса.

Совет

Для всех курсов можно использовать набор виртуальных машин от курса Junior-01. В Junuor-04 добавляется одна небольшая vm для внешнего роутера.

Сводная таблица

КурсДлительностьСтендВерсия KubernetesПредшествующие курсы
Junior-01 - основы5 недель5 ВМ: 3 control plane + 2 worker, HA1.37 (по инструкции курса)не требуются
Junior-02 - Helm и логи4 недели3-4 ВМ: 1 control plane + 2-3 worker>= 1.35Junior-01
Junior-03 - метрики и алерты4 недели5 ВМ: 1 control plane + 4 worker>= 1.35Junior-01, Junior-02 (рекомендуется)
Junior-04 - сеть “под капотом”5 недель6 ВМ: 1 control plane + 4 worker + BGP-роутер>= 1.35Junior-01, Junior-02 (желательно)

Общие требования к стенду (все курсы)

  • ОС виртуальных машин - Rocky Linux 10
  • Гипервизор - любая среда виртуализации с поддержкой снапшотов (PROXMOX VE, VMware, KVM/libvirt, VirtualBox и т.п.). Хост виртуализации должен располагать суммарными ресурсами всех ВМ курса плюс запас на хостовую ОС
  • DNS-зона local.lan - собственный DNS-сервер (например, dnsmasq). Размещение определяет слушатель: отдельная ВМ, одна из нод кластера или любой доступный DNS-сервер
  • Доступ в интернет с ВМ (для Junior-03 возможна работа через локальный кэш-реестр образов - см. материалы курса)
  • Рабочая станция - SSH-клиент, kubectl, helm, браузер. Для Junior-04 дополнительно - возможность добавить статический маршрут
  • На всех ВМ - пользователь с правами sudo и SSH-доступ по ключу

Снапшоты виртуальных машин

Курсы построены на практических экспериментах на собственном стенде. Часть операций необратима или ломает кластер, поэтому настоятельно рекомендуется использовать механизм снапшотов среды виртуализации - это позволяет за минуты откатиться к рабочему состоянию после ошибки вместо многочасительного перестроения стенда.

Общие правила:

  • Снимайте снапшот всех ВМ стенда в контрольных точках:
    • после подготовки ОС и до установки кластера;
    • после успешного развёртывания кластера и базовых компонентов;
    • перед началом каждой новой недели или крупной темы.
  • Откатывайте весь набор ВМ кластера целиком, а не отдельные ноды. У кластеров с несколькими нодами control plane откат одной ноды ломает кворум etcd - кластер перестаёт собираться.
  • Перед снапшотом предпочтительно выключить ВМ или использовать консистентный (quiesced) снапшот: состояние etcd и баз данных должно быть согласовано на всех ВМ.
  • Помните об ограничениях: снапшот не заменяет резервную копию; откат уничтожает данные, появившиеся после контрольной точки (в том числе данные в PV на локальных дисках нод); длинная цепочка снапшотов замедляет диски ВМ - держите не больше одной-двух активных точек.

Контрольные точки по курсам:

КурсКогда обязательно снять снапшот
Junior-01перед началом каждой недели
Junior-02перед неделями 2, 3, 4 - установка Redpanda, хранилищ логов, итоговый проект
Junior-03перед каждой неделей - стеки мониторинга ставятся и пересобираются
Junior-04перед каждой лабораторной работой; особенно перед заменой CNI, переключением режимов kube-proxy и миграцией Calico -> Cilium

Курс Junior-04 содержит “опасные” операции (переключение режимов kube-proxy, замена CNI живого кластера) - дисциплина снапшотов для него не рекомендация, а обязательное условие комфортного прохождения.

Базовая квалификация (общая для всех курсов)

  • Linux на уровне уверенного пользователя: командная строка, работа с файлами и правами, systemd, установка пакетов, SSH, чтение журналов (journalctl)
  • Базовые сети: IP-адресация и маски, DNS, TCP/UDP, HTTP(S); первичная диагностика (ping, curl, host)
  • Виртуализация: создание ВМ, установка ОС из ISO, управление снапшотами
  • Чтение и редактирование YAML
  • Чтение технической документации на английском языке

Junior-01 - основы Kubernetes

Курс для начинающих: первые шаги в Kubernetes - от архитектуры и первых подов до RBAC, Ingress и Gateway API.

Требования к стенду - Junior-01

  • 5 ВМ: 3 control plane + 2 worker
  • HA-кластер разворачивается самостоятельно по инструкциям курса (kubeadm, CNI Calico или flannel, HA на keepalived + haproxy с VIP 192.168.218.140)
  • DNS-сервер зоны local.lan; NFS-сервер для PV (можно разместить на ноде кластера)

Ресурсы на одну ВМ:

ПараметрМинимальноОптимально
CPU46
RAM4 Gi6 Gi
Disk20G32G

Итого на 5 ВМ: минимально 20 CPU / 20 Gi / 100G, оптимально 24 CPU / 30 Gi / 160G.

Минимальная квалификация - Junior-01

  • Достаточно общей базы, описанной выше; опыт работы с Kubernetes не требуется
  • Готовность самостоятельно разворачивать HA-кластер по пошаговым инструкциям курса
  • Общее представление о контейнерах и образах (Docker/Podman), опыт чтения YAML

Junior-02 - Helm и логи

Упаковка приложений в Helm и полный конвейер обработки логов: сбор (Fluent Bit, Vector), очередь (Redpanda), хранилища (OpenSearch, VictoriaLogs), дашборды Grafana.

Требования к стенду - Junior-02

  • Кластер: 1 control plane + 3 worker; минимально допустимая конфигурация - 1 control plane + 2 worker
  • Альтернатива - переиспользовать 5 ВМ стенда Junior-01, переведя cp2 и cp3 в роль worker (этот же кластер станет стендом Junior-03)
  • К началу курса устанавливаются: CNI, CoreDNS + NodeLocalDNS, StorageClass NFS и local-path, cert-manager, MetalLB, Envoy Gateway, metrics-server, Helm CLI
  • DNS-сервер зоны local.lan; NFS-сервер и local-path-provisioner (Redpanda требует direct I/O и не работает на NFS)

Минимальная конфигурация (3 ВМ - 1 control plane + 2 worker):

ВМCPURAMDisk
cp1 (control plane)44 Gi32G
worker (каждая из 2)48 Gi32G

Итого: 16 CPU / 20 Gi / 96G.

Оптимальная конфигурация (4 ВМ - 1 control plane + 3 worker):

ВМCPURAMDisk
cp1 (control plane)44 Gi32G
worker (каждая из 3)36 Gi32G

Итого: 12 CPU / 22 Gi / 128G.

При снижении RAM ниже указанного возможно исчерпание памяти при одновременном запуске всех компонентов (Redpanda + хранилище логов + Grafana).

Минимальная квалификация - Junior-02

  • Завершённый Junior-01 или эквивалентные навыки: писать манифесты основных объектов (Pod, Deployment, StatefulSet, DaemonSet, Job/CronJob, Service, Ingress, Gateway API), работать с томами (PV/PVC, NFS), настраивать RBAC и CoreDNS
  • Умение самостоятельно развернуть кластер kubeadm с нуля и установить компоненты инфраструктуры по инструкциям курса
  • Желательно: представление о логах приложений (stdout, файлы, структурированные логи)
  • Знание Helm не требуется - изучается в курсе

Junior-03 - метрики и алерты

Метрики в Kubernetes: экспортёры, Prometheus и Prometheus Operator, VictoriaMetrics (single и cluster), алерты (vmalert, Alertmanager, Karma), Grafana.

Требования к стенду - Junior-03

  • Кластер Junior-01 (те же ВМ), измененный до 1 control plane + 4 worker: ноды cp2 и cp3 переведены в роль worker
  • Дополнительные сервисы: NFS-сервер (storageClass nfs-storage), postfix-релей для почтовых алертов, при необходимости - локальный кэш-реестр образов
  • Все веб-интерфейсы публикуются через Envoy Gateway (Gateway VIP 192.168.218.180)

Ресурсы (значения из материалов курса - минимум для комфортной работы):

ВМCPURAMDisk
cp1 (control plane)44 Gi32G
worker (каждая из 4)48 Gi32G

Итого: 20 CPU / 36 Gi / 160G.

Оптимально - те же CPU с запасом RAM: cp1 8 Gi, worker 12 Gi (итого 20 CPU / 56 Gi / 160G). Запас важен при развёртывании VictoriaMetrics в cluster-режиме (3 vmstorage, 2 vminsert, 2 vmselect) параллельно с Grafana и остатками стека Junior-02; следите за свободной памятью через kubectl top nodes.

Минимальная квалификация - Junior-03

  • Завершённый Junior-01 обязателен
  • Junior-02 рекомендуется: курс переиспользует стенд, развёрнутый в Junior-02, и активно работает с Helm-чартами
  • Уверенная работа с Helm: установка чартов, переопределение values, откат релизов
  • Желательно: общее представление о мониторинге и метриках (не обязательно - теория даётся в курсе)

Junior-04 - сеть Kubernetes “под капотом”

Сеть Kubernetes изнутри: network namespaces и CNI (Calico), режимы kube-proxy, MetalLB и BGP (FRRouting), eBPF-эра - Cilium и Hubble.

Требования к стенду - Junior-04

  • Кластер Junior-02/Junior-03 (5 ВМ: 1 control plane + 4 worker; к первой неделе разворачивается кластер без CNI - CNI, CoreDNS, MetalLB и Cilium устанавливаются в процессе курса)
  • Дополнительная ВМ программного BGP-роутера rtr1 (FRRouting, AS 65000)
  • Подготовка нод: пакет kernel-modules-extra под работающее ядро, tcpdump на всех нодах
  • “Внешняя” подсеть 192.168.219.0/24 за роутером rtr1; на рабочей станции добавляется статический маршрут в эту подсеть
  • Четыре worker-ноды нужны для наглядности BGP/ECMP; конфигурация на 3 worker допустима, но не рекомендуется

Минимальная конфигурация:

ВМCPURAMDisk
ноды кластера (каждая из 5)24 Gi32G
rtr1 (BGP-роутер)11 Gi10G

Итого: 11 CPU / 21 Gi / 170G.

Оптимальная конфигурация (неделя 4 - Cilium + Hubble - дополнительно загружает ноды; при нехватке RAM уменьшайте набор развёрнутых приложений, а не число нод):

ВМCPURAMDisk
ноды кластера (каждая из 5)48 Gi32G
rtr1 (BGP-роутер)11 Gi10G

Итого: 21 CPU / 41 Gi / 170G.

Минимальная квалификация - Junior-04

  • Завершённый Junior-01 обязателен; Junior-02 желателен (по материалам курса слушатель умеет писать Helm-чарты)
  • Уверенное понимание сетей: маршрутизация, NAT/DNAT, CIDR, L2 против L3, ARP, DNS - курс разбирает их “с нуля”, но в быстром темпе
  • Готовность к работе с Linux-диагностикой сети: ip, tcpdump, таблицы маршрутизации, netfilter
  • Готовность к “опасным” операциям на кластере: замена CNI, переключение режимов kube-proxy, миграция Calico -> Cilium (обязательная дисциплина снапшотов)