☸️ Kubernetes: штурвал, который подчинил себе океан
▫️Как устроен (архитектура) · Control Plane (Master) — мозг кластера. Состоит из: — API Server — единственная точка входа (kubectl, UI, другие компоненты общаются с ним) — etcd — распределённое хранилище конфигурации и состояния (ключевая база данных) — Scheduler — назначает поды на узлы (учитывает ресурсы, политики, метки) — Controller Manager — запускает контроллеры, которые следят за состоянием (ReplicaSet, Deployment, Node и др.) · Worker Nodes — рабочие сервера, где крутятся контейнеры. На каждом: — kubelet — агент, который общается с API Server и запускает поды — kube-proxy — управляет сетевыми правилами (iptables/IPVS), обеспечивает сервисы — Container Runtime — среда для контейнеров (containerd, CRI-O, Docker)
▫️Ключевые объекты (в Kubernetes всё — ресурсы): · Pod — самая маленькая единица. Один или несколько контейнеров, которые всегда работают вместе на одном узле, разделяют network namespace и storage · Deployment — декларативное управление подами. Описывает, сколько копий, какой образ, как обновлять (rolling update, recreate). Создаёт ReplicaSet · Service — стабильная точка входа к подам. Типы: ClusterIP (внутри кластера), NodePort (порт на узлах), LoadBalancer (облачный балансировщик), ExternalName (DNS-псевдоним) · Ingress — HTTP-маршрутизация извне (по хостам, путям). Работает через Ingress Controller (NGINX, Traefik) · ConfigMap / Secret — хранение конфигураций и чувствительных данных (пароли, токены) · PersistentVolume / PersistentVolumeClaim — абстракции для хранения данных, переживающих перезапуск подов · Namespace — виртуальный кластер внутри кластера. Для разделения сред (dev, stage, prod) или команд
▫️Почему Kubernetes победил: · Декларативный подход — вы описываете желаемое состояние (YAML), а система сама приводит к нему · Самовосстановление — если под упал, kubelet перезапустит; если узел вышел из строя, контроллер пересоздаст поды на других узлах · Масштабирование — горизонтальное (увеличение копий) и вертикальное (увеличение ресурсов). Работает вручную или автоматически (HPA — Horizontal Pod Autoscaler) · Не привязан к вендору — работает и в облаке (AWS, GCP, Azure, Yandex Cloud), и на «железе», и на ноутбуке разработчика (Minikube, Kind) · Огромное сообщество — второй по величине проект с открытым кодом в мире после Linux (более 80 000 участников) · Экосистема — вокруг выросли сотни инструментов: мониторинг (Prometheus), логи (Loki, EFK), безопасность (OPA, Kyverno), service mesh (Istio, Linkerd), CI/CD (ArgoCD, Jenkins X)
📚 Полезные команды kubectl (шпаргалка)
🔹 Работа с подами kubectl get pods — список подов kubectl get pods -w — следить за изменениями kubectl logs — логи пода kubectl logs -f — логи в реальном времени kubectl exec -it – sh — запустить shell в поде kubectl describe pod — детальная информация kubectl delete pod — удалить под
🔹 Работа с деплойментами kubectl get deployments — список kubectl scale deployment --replicas=5 — изменить количество копий kubectl set image deployment/ = — обновить образ kubectl rollout status deployment/ — статус обновления kubectl rollout history deployment/ — история ревизий kubectl rollout undo deployment/ — откат
🔹 Работа с сервисами kubectl get services — список kubectl expose deployment --type=NodePort --port=80 — создать сервис kubectl port-forward service/ 8080:80 — проброс порта локально
🔹 Работа с конфигурациями kubectl apply -f file.yaml — применить конфигурацию kubectl delete -f file.yaml — удалить kubectl get configmaps / kubectl get secrets kubectl create configmap --from-literal=key=value
🔹 Общая информация kubectl cluster-info — информация о кластере kubectl get nodes — список узлов kubectl get namespaces kubectl api-resources — все доступные ресурсы
#kubernetes #k8s #devops #оркестрация #контейнеры #облачные_технологии