
🎮 Что это за игра?
Перед вами не просто технический мануал — это 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-шаманов.
ссылка на оригинал статьи https://habr.com/ru/articles/879470/
Добавить комментарий