Архитектура Kubernetes (Master-Worker)
Кубер разделен на две части: Control Plane (мозги) и Nodes (мышцы).
Control Plane (Master-нода):
API Server: «Входная дверь». Все команды (от тебя или от других компонентов) идут сюда.
etcd: База данных «ключ-значение». Хранит всё состояние кластера (память кластера).
Scheduler: «Диспетчер». Решает, на какую рабочую ноду отправить новый Под (смотрит, где есть место).
Controller Manager: «Надсмотрщик». Следит, чтобы реальное состояние совпадало с желаемым (если под упал — он велит создать новый).
Worker Nodes (Рабочие ноды):
Kubelet: Агент на каждой ноде. Слушает команды от Master и управляет контейнерами.
Kube-proxy: Отвечает за сеть (чтобы трафик доходил до нужного пода).
Container Runtime: Движок (Docker или Containerd), который физически запускает контейнеры.
Troubleshooting
kubectl describe pod [имя] — самая важная команда. Показывает события (Events): почему не скачался образ, почему не хватило памяти, на какую ноду сел под.
kubectl logs -f [имя] –previous — посмотреть логи. Флаг –previous незаменим: он показывает логи предыдущего воплощения пода, который только что упал.
kubectl exec -it [имя] – bash — залезть внутрь пода, чтобы «курлануть» базу или проверить конфиги.
Просмотр состояния
kubectl get pods -A — список всех подов во всех неймспейсах (Namespace).
kubectl get nodes — живы ли сервера, на которых крутится кластер.
kubectl get svc — проверить внешние и внутренние IP сервисов.
Ресурсы и управление
kubectl top pod — покажи, кто прямо сейчас ест больше всего памяти и проца.
kubectl rollout undo deployment/[имя] — экстренный откат деплоймента на предыдущую версию.
kubectl scale deployment [имя] –replicas=5 — быстро увеличить количество копий приложения.
Pod (Под)
Минимальная единица K8s. Внутри пода живет один или несколько контейнеров, которые делят один IP и локальную сеть. Под — это то, что мы мониторим в первую очередь.
Deployment (Деплоймент)
Деплоймент управляет подами. Он следит за их количеством (репликами) и отвечает за обновление приложения без простоя (Rolling Update). Если ты удалишь под, деплоймент тут же создаст новый.
Service (Сервис)
Поды смертны и их IP меняются. Сервис — это стабильный «виртуальный IP» и DNS-имя. Он балансирует трафик между всеми подами одного приложения.
Requests vs Limits
Requests — сколько ресурсов гарантированно зарезервировано за подом (планировщик ищет ноду с этим местом). Limits — жесткий потолок. Если под превысит RAM Limit, он получит OOMKilled.
Liveness vs Readiness Probes
Liveness проверяет, не зависло ли приложение (если не ответит — рестарт пода). Readiness проверяет, готово ли приложение принимать трафик (если не ответит — сервис перестает слать на него запросы).
ConfigMap и Secrets
ConfigMap — для обычных конфигов (порты, пути). Secrets — для паролей, токенов и ключей (они хранятся в base64 и скрыты в логах).