
🎮 Что это за игра?
Перед вами не просто технический мануал — это 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-шаманов.