Блок 7 Презентация

Инфраструктура — k3s на DigitalOcean — Презентация

Продолжительность: ~10 минут Цель: Студенты понимают, почему k3s – правильный выбор для легковесного Kubernetes, что предлагает DigitalOcean и как выглядит целевая архитектура.


Слайд 1: Налог на Kubernetes

Давайте поговорим о слоне в комнате. Kubernetes – это великолепно. Но это ещё и очень много.

Полноценный кластер под управлением kubeadm требует:

  • 3 узла control plane (для HA) – каждому минимум 2 CPU, 4 ГБ RAM
  • etcd – отдельная распределённая база данных только для состояния кластера
  • Сетевой плагин – Calico, Cilium, Flannel – нужно выбрать и настроить
  • Балансировщик нагрузки – MetalLB или LB облачного провайдера
  • Хранилище – CSI-драйверы, провизионеры persistent volume
  • Ingress – Nginx, Traefik, HAProxy – ещё один выбор, ещё одна настройка

Это легко $200-400/месяц у любого облачного провайдера, и это до того, как вы задеплоите хотя бы один под своего приложения. Для продакшн-платформы электронной коммерции с 50 микросервисами? Оправданно. Для нашего учебного проекта? Абсурд.

Нам нужно что-то полегче.


Слайд 2: Встречайте k3s – Kubernetes на диете

k3s – это Kubernetes. Не “что-то вроде Kubernetes” и не “совместимый с Kubernetes”. Это сертифицированный, полностью соответствующий стандартам Kubernetes, который проходит те же самые тесты CNCF conformance, что и полная дистрибуция. Разница – в упаковке.

Характеристика Полный K8s (kubeadm) k3s
Размер бинарника ~300 МБ + зависимости ~60 МБ один бинарник
Базовое потребление RAM 2-4 ГБ на узел 512 МБ
etcd Обязательно (отдельный кластер) SQLite (встроенный, опционально etcd/postgres)
Сеть BYO (Calico, Cilium) Flannel (встроенный)
Ingress BYO (Nginx, Traefik) Traefik (встроенный)
Балансировщик нагрузки BYO (MetalLB) ServiceLB (встроенный)
Хранилище BYO CSI-драйвер Local-path provisioner (встроенный)
Время установки 30-60 минут 30 секунд

Одна команда curl. Это вся установка. Всё, что нужно, включено. И каждая команда kubectl, которую вы знаете, работает точно так же.

Интересный факт: k3s назван так, потому что он “в два раза меньше k8s”. В Kubernetes 10 букв, что сократили до k-8-s (k + 8 букв + s). k3s следует той же схеме, но с 5 буквами – k + 3 буквы + s. Половина имени, половина объёма. Проект был создан Дарреном Шепардом в Rancher Labs (теперь часть SUSE) и выпущен в 2019 году.


Слайд 3: Почему DigitalOcean?

Нам нужен сервер. Облачных провайдеров десятки. Вот почему для этого курса подходит DigitalOcean:

Простота. Создание дроплета занимает 60 секунд через UI. Никаких VPC для настройки, никаких IAM-ролей, никакой консоли с 47 вкладками. Клик, клик, готово.

Предсказуемая цена. Дроплет s-2vcpu-4gb (2 vCPU, 4 ГБ RAM, 80 ГБ SSD) стоит ровно $24/месяц. Никаких внезапных плат за трафик, никаких “зависит от использования”. Двадцать четыре доллара. Точка.

Достаточно для реальной работы. DigitalOcean – это не только для туториалов. Множество продакшн-нагрузок работает на нём. Для одноузлового кластера k3s с нашим приложением – более чем достаточно.

Альтернативы тоже хороши – Hetzner ($4.50/мес за 2 ГБ!), Linode, Vultr, даже запасной Raspberry Pi на вашем столе. Установка k3s везде одинаковая. Мы используем DigitalOcean, потому что у него чистая консоль и прозрачное ценообразование.


Слайд 4: Целевая архитектура

Вот что мы строим в этом блоке:

Your Laptop                          DigitalOcean Droplet
+--------------+                     +---------------------------+
|              |    SSH / kubectl     |  Ubuntu 22.04             |
|  Claude Code | ─────────────────── |  k3s (single node)        |
|  kubectl     |                     |                           |
|              |                     |  Pods:                    |
+--------------+                     |  ┌─────────────────────┐  |
                                     |  │ ai-coderrank (Next)  │  |
                                     |  │ namespace: ai-coder  │  |
                                     |  └─────────────────────┘  |
                                     |                           |
                                     |  System pods:             |
                                     |  - CoreDNS                |
                                     |  - Traefik                |
                                     |  - ServiceLB              |
                                     |  - Metrics server         |
                                     +---------------------------+

Один дроплет. Один бинарник k3s. Ваше приложение запущено как поды. Вот и всё.

Пока не выставлен наружу – мы сделаем это с ArgoCD и NodePort в Блоке 12. А сейчас проверяем работоспособность через kubectl port-forward с вашего ноутбука.


Слайд 5: Что Claude делает (и не делает) для инфраструктуры

Давайте чётко определим роль Claude Code в работе с инфраструктурой.

В чём Claude хорош:

  • Генерация скриптов провизионирования с правильными флагами и опциями
  • Запоминание точного синтаксиса scp, который вы вечно гуглите
  • Написание команды curl | sh с правильными переменными окружения
  • Отладка, когда kubectl get nodes показывает NotReady
  • Объяснение, что делает каждый шаг, прежде чем вы его выполните

Чего Claude не может:

  • Нажимать кнопки в консоли DigitalOcean за вас
  • Подключаться по SSH к вашему серверу (он выполняет команды на вашей машине, не на удалённой)
  • Исправлять сетевые проблемы, которые не может наблюдать (нет доступа к состоянию удалённого сервера)

Рабочий процесс такой: Claude генерирует команду, вы её выполняете. Claude читает вывод, предлагает следующий шаг. Контроль остаётся у вас. Это особенно важно для инфраструктуры – неправильная команда на удалённом сервере может сломать то, что трудно откатить.

Думайте о Claude как о старшем инженере, сидящем рядом с вами во время первой настройки сервера. Он говорит вам, что набирать и почему. Он читает сообщения об ошибках вместе с вами. Но ваши пальцы на клавиатуре, и вы решаете, когда нажать Enter.


Слайд 6: План действий

Вот как выглядит практическая часть, шаг за шагом:

  1. Провизионирование – Создайте дроплет DigitalOcean (Claude генерирует скрипт, или используйте консоль)
  2. Подключение – Войдите по SSH на дроплет, убедитесь, что это чистая Ubuntu-машина
  3. Установка k3s – Одна команда, ждём 30 секунд, готово
  4. Проверка кластераkubectl get nodes, kubectl get pods -A
  5. Копирование kubeconfig – Перенесите конфиг k3s на ноутбук для удалённого управления через kubectl
  6. Деплойkubectl apply -k k8s/ с вашего ноутбука
  7. Проверка приложения – Port-forward и открываем приложение в браузере

Семь шагов. Тридцать минут. В конце у вас настоящий Kubernetes-кластер, на котором работает ваше настоящее приложение.


Ключевые выводы

Концепция Что это Почему это важно
k3s Легковесный, сертифицированный Kubernetes в одном бинарнике Полная мощь K8s на сервере за $24/месяц
Дроплет DigitalOcean Виртуальный сервер в облаке Просто, предсказуемо, недорого
kubeconfig Файл с учётными данными для доступа через kubectl Позволяет управлять кластером с ноутбука
kubectl apply -k Применение манифестов через Kustomize Деплоит все K8s-ресурсы одной командой
Port-forward Туннель порта пода на localhost Тестирование без открытия доступа в интернет

Переход: Пора поднять настоящую инфраструктуру. Сейчас вы перейдёте от “у меня есть YAML-файлы” к “у меня работают поды в облаке”. Поехали.


Готовы проверить себя?

Пройти квиз →