Курс предназначен для специалистов, завершивших курс Kubernetes Junior-1.

Курс посвящён наблюдаемости (observability): сбору, хранению и визуализации метрик в Kubernetes, построению системы алертов и дашбордов.

Формат проведения - ментор-студент.

Важно

Курс предполагает самостоятельное развёртывание кластера Kubernetes с нуля (1 control plane + 4 worker). Инструкция по установке кластера находится в материалах курса. Требования к тестовому стенду.

Для кого этот курс

Слушатель курса Junior-3 умеет:

  • писать манифесты Kubernetes (Pod, Deployment, StatefulSet, DaemonSet, Job/CronJob, Service, Ingress, Gateway API);
  • работать с томами (PV/PVC, NFS, Projected Volumes);
  • настраивать RBAC, CoreDNS, Ingress и Gateway API;
  • разворачивать приложения при помощи Helm чартов.

Курс Junior-3 заполняет пробелы необходимые для реальной эксплуатации приложений в kubernetes:

  • источники метрик - экспортёры, control plane, node-exporter;
  • сбор и хранение - Prometheus, Prometheus Operator, VictoriaMetrics;
  • алерты - vmalert/Alertmanager, Karma;
  • визуализация - Grafana с набором готовых дашбордов.

План курса по неделям

Каждая неделя предполагает самостоятельную работу слушателя в объёме 3 часа в день, 6 дней (18 часов). Седьмой день - запасной: для отставания, углублённого изучения или завершения практических заданий. По завершении самостоятельной работы - контроль преподавателя.

Snapshots виртуальных машин

Перед началом изучения каждой новой темы рекомендуется создать snapshot всех виртуальных машин тестового стенда. Это позволит быстро вернуться к рабочему состоянию в случае ошибок при выполнении практических заданий.

Сквозной сценарий курса: “собирать → хранить → уведомлять → наблюдать”. Сначала разбираются источники метрик, простой Prometheus и Prometheus Operator (с CRD). Затем VictoriaMetrics (single + cluster) и vmagent. Теоретический разбор VictoriaMetrics Operator. После этого настраиваются алерты (vmalert/Alertmanager) и дашборды (Grafana), а в финале всё объединяется в комплексный проект на VictoriaMetrics.

№НеделяТемы
1Метрики - теория и простой PrometheusПринцип сбора метрик (pull, exposition-формат, типы метрик), экспортёры (kube-state-metrics, node-exporter), метрики control plane, простой Prometheus, демо-приложение, Textfile Collector, Prometheus Operator (kube-prometheus-stack, CRD)
2VictoriaMetricsVictoriaMetrics single и cluster (3 vmstorage), vmagent, сравнение Prometheus / Operator / VictoriaMetrics, обзор VictoriaMetrics Operator
3Алерты, Karma, GrafanaAlertmanager, vmalert, примеры алертов (control plane, node-exporter), уведомления (почта через postfix, Telegram - теория), Karma, Grafana с готовыми дашбордами
4Итоговая контрольная работаКомплексный проект с нуля на VictoriaMetrics cluster: экспортёры, vmagent, vmalert + Alertmanager + postfix + Karma, Grafana; собственные правила алертов (scale-to-0, исчезновение таргета, CrashLoop, аномалия приложения) и дашборд

Сквозная архитектура курса

  flowchart TD
    User["user (curl)<br/>из-за пределов кластера"]

    subgraph Sources["Источники метрик"]
        App["Демо-приложение<br/>(генератор метрик)"]
        KSM["kube-state-metrics<br/>(объекты k8s)"]
        NE["node-exporter (DaemonSet)<br/>(метрики ОС)"]
        CP["control plane<br/>(apiserver, etcd, scheduler)"]
    end

    User -->|"HTTP-запрос (нагрузка)"| App

    App -->|/metrics| Scrape
    KSM -->|/metrics| Scrape
    NE -->|/metrics| Scrape
    CP -->|/metrics| Scrape

    subgraph Scrape["Сбор"]
        Prom["Prometheus<br/>(неделя 1)"]
        VMA["vmagent<br/>(недели 2-4)"]
    end

    subgraph Db["Хранение"]
        Prometheus[("Prometheus<br/>(неделя 1)")]
        VMSingle[("VictoriaMetrics single<br/>(неделя 2)")]
        VMCluster[("VictoriaMetrics cluster<br/>3x vmstorage (неделя 2)")]
    end

    Prom --> Prometheus
    VMA --> VMSingle
    VMA --> VMCluster
    VMSingle --> VMAalert["vmalert<br/>(правила алертов)"]
    VMCluster --> VMAalert

    subgraph Views["Просмотр"]
        Karma["Karma<br/>(дашборд алертов)"]
        Graf["Grafana<br/>(дашборды метрик)"]
    end

    VMAalert --> AM["Alertmanager<br/>(маршрутизация)"]
    AM -->|"email"| MX["postfix (mail-relay)"]
    AM -.-> TG["Telegram"]
    MX --> Mailbox["Почта"]
    Karma --> AM

    VMSingle --> Graf
    VMCluster --> Graf

Расписание курсов

Как такового расписания нет.

Начало нового потока курсов объявляется в группе в Телеграм.