Как стать автором
Обновить

Kubernetes в джунглях агротех: как мы спасаем банановые кластеры

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2K

🎮 Что это за игра?

Перед вами не просто технический мануал — это SimCity для кластеров с банановым сюжетом! Если вы только начали выращивать свои первые «бананы» (поды) в Kubernetes и хотите разобраться в базовых механиках через игровые аналогии, то этот материал для вас. Я Михаил Костельцев, главный инженер Центра бесперебойной поддержки платформенных и интеграционных решений в РСХБ-Интех.

Все кейсы — упрощенные сценарии из реальной жизни. Мы сознательно избегаем сложных терминов, заменяя их «садоводческими» метафорами.

🎮 Правила игры

В игре используем примеры из реального опыта, адаптируем их для ищущих понятные аналогии новичков в Kubernetes. Для профи это повторение пройденного и развлечение. Реальные кластеры сложнее, здесь мы убрали:

  • Ядовитых змей (Custom Resource Definitions)

  • Кислотные дожди (Service Meshes)

  • Вулканы (Cluster API)

Стартовый набор садовника

# 🧰 Инструментарий банановода
инвентарь:  
  - мачете: kubectl
  - лейка: Helm  
  - удобрения: Prometheus
  - амулет: NetworkPolicy

🌱 Часть 1: Базовые механики

🚜 Уровень 1: Саженцы не прорастают (Pending Pods)

Механика: Ресурсные ограничения.
Сложность: ★☆☆☆ (Новичок)

🐒 Для новичков

Проблема: Саженцы (поды) зависли в воздухе!
Аналогия: Арбузы (тяжёлые сервисы) заняли всю почву (ресурсы ноды).

Решение:
1. Увеличьте квоты ресурсов
2. Настройте приоритеты для важных бананов.

🦍 Для профи

Диагностика:

kubectl get pods -o wide | grep Pending
kubectl describe pod pending-banana | grep -A 10 "Events:"

Полный манифест:

apiVersion: v1
kind: Pod
metadata:
  name: golden-banana
spec:
  containers:
  - name: banana-app
    image: banana:latest
    resources:
      requests:
        cpu: "500m"    # Минимум для роста
        memory: "1Gi"  # Вода для саженца
      limits:
        cpu: "1"       # Максимум для урожая
        memory: "2Gi"  # Лимит воды
  priorityClassName: high-priority # 🏆 VIP-бананы

🏆 Achievement: Спаситель саженцев


🌿 Уровень 2: Бунт ростков (CrashLoopBackOff)

Механика: Логирование и пробы
Сложность: ★★☆☆ (Любитель)

🐒 Для новичков

Проблема: Бананы падают, как подкошенные!
Аналогия: Злой попугай (ошибка конфига) портит урожай.

Решение:
1. Найдите ошибку в логах.
2. Настройте проверки жизнеспособности

🦍 Для профи

Диагностика:

kubectl logs banana-pod --previous | grep -i "panic"
kubectl describe pod banana-pod | grep -A 10 "Events:"

Полный манифест:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: banana-deployment
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: banana-app
        image: banana:stable
        livenessProbe:
          httpGet:
            path: /health
            port: 8080
          initialDelaySeconds: 10 # ⏳ Даем время на старт
          periodSeconds: 5        # 🔄 Частота проверок
        readinessProbe:
          httpGet: # Как проверяем?
            path: /ready # По какому http-пути проверяем
            port: 8080 # По какому порту проверяем
          initialDelaySeconds: 5
          periodSeconds: 3

🏆 Achievement: Укротитель падающих бананов


🚧 Часть 2: Строительство мостов

Уровень 3: Невидимый урожай (Network Issues)

Механика: Network Policies
Сложность: ★★☆☆ (Любитель)

🐒 Для новичков

Проблема: Бананы есть, но их не видно!
Аналогия: Мосты между островами разрушены.

Решение:
1. Проверьте связность между сервисами.
2. Настройте политики доступа.

🦍 Для профи

Диагностика:

kubectl run -it debug --image=nicolaka/netshoot -- curl http://banana-svc
kubectl get networkpolicies -n banana-farm

Полный манифест:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-banana-traffic
  namespace: banana-farm
spec:
  podSelector:
    matchLabels:
      app: banana
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: harvester
    ports:
    - protocol: TCP
      port: 8080
  egress:
  - to:
    - ipBlock:
        cidr: 10.0.0.0/8
    ports:
    - protocol: TCP
      port: 53

🏆Achievement: Повелитель сетевых потоков


Бонус: Ритуалы шаманов

Хаос-ритуалы(Chaos Engineering)
Сложность: ★★★☆ (Эксперт)

🐒 Для новичков

Цель: Проверить устойчивость плантации.
Аналогия: Искусственный ураган для проверки деревьев.

🦍 Для профи

# 💥 Эмуляция сетевых задержек для пода "etcd-pod"
kubectl exec -it etcd-pod -- tc qdisc add dev eth0 root netem delay 1000ms

Босс: Гнев богов etcd

Сложность: ★★★★ (Мастер)

🐒 Для новичков

Проблема: Хранители знаний (etcd) разгневаны!
Решение: Восстановите кворум и используйте бэкапы.

🦍 Для профи

Полный манифест для бэкапов:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: etcd-backup
spec:
  schedule: "0 * * * *" # Каждый час
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: etcd-backup
            image: bitnami/etcd:3.5
            command:
            - "/bin/sh"
            - "-c"
            - "etcdctl snapshot save /backups/etcd-$(date +%s).db"
          restartPolicy: OnFailure

🏆 Achievement: Жрец etcd

🏁 Эпилог: Сбор урожая

Поздравляем! Вы стали мастером бананового земледелия. Дальнейший путь:

1. Посадите свой кластер-саженец
2. Изучите священные тексты CNCF
3. Присоединитесь к гильдии садоводов

«Даже великая роща начинается с одного семени. Главное — не забывать поливать бэкапами». Древняя мудрость SRE-шаманов.

Теги:
Хабы:
Всего голосов 13: ↑11 и ↓2+13
Комментарии3

Публикации

Информация

Сайт
www.rshbdigital.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия
Представитель
Юлия Князева