📘 Kubernetes (K8s)
1. Общие сведения
Наименование:
Kubernetes (часто сокращают как K8s)
Описание:
Kubernetes — это открытая платформа для автоматизации развертывания, масштабирования и управления контейнеризованными приложениями. Изначально разработан Google, сейчас поддерживается Cloud Native Computing Foundation (CNCF).
Тип системы:
Система оркестрации контейнеров / Инструмент DevOps
Класс: Container Orchestration Platform
Разработчик:
Google (первоначально), CNCF (с 2015 года)
Год выпуска:
2014 год (официальный релиз)
Лицензия:
Apache License 2.0 (open source)
Сайт: https://kubernetes.io
2. Основные компоненты
Узлы кластера:
Компонент | Описание |
---|---|
Master Node (Control Plane) | Главный узел, управляющий всем кластером |
etcd | Распределённое хранилище конфигураций и состояния кластера |
API Server | Точка входа для всех операций с кластером |
Controller Manager | Контроллеры, следящие за текущим состоянием кластера |
Scheduler | Назначает Pod'ы на рабочие узлы |
Worker Node | Рабочий узел, где запускаются контейнеры |
kubelet | Агент на каждом Worker Node, взаимодействующий с API сервером |
kube-proxy | Отвечает за сетевую связь между Pod'ами и сервисами |
Container Runtime | Среда выполнения контейнеров (Docker, containerd, CRI-O и др.) |
3. Основные понятия
Понятие | Описание |
---|---|
Pod | Наименьшая единица развёртывания; содержит один или несколько контейнеров |
Deployment | Описывает желаемое состояние приложения (например, количество реплик) |
Service | Предоставляет стабильный IP и DNS для доступа к Pod'ам |
Namespace | Логическое разделение ресурсов внутри одного кластера |
ConfigMap / Secret | Хранение конфигурационных данных и секретов соответственно |
Persistent Volume (PV) / PVC | Механизм хранения данных вне контейнеров |
Ingress | Входящие HTTP/HTTPS маршруты, обеспечивают внешний доступ к сервисам |
Helm Chart | Упаковка приложений в виде шаблонов для удобного деплоя |
4. Примеры использования
Пример Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
Пример Service:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
Основные команды:
kubectl get pods
kubectl apply -f deployment.yaml
kubectl describe pod <pod-name>
kubectl config get-contexts
kubectl delete pod <pod-name>
helm install my-app ./my-chart
5. Преимущества использования Kubernetes
✅ Автоматизация управления контейнерами
✅ Масштабируемость – легко добавлять или уменьшать количество инстансов
✅ Высокая доступность – автоматический перезапуск неисправных контейнеров
✅ Поддержка микросервисных архитектур
✅ Интеграция с CI/CD – легко внедряется в pipeline
✅ Поддержка облачных провайдеров – AWS EKS, Azure AKS, GCP GKE и др.
✅ Open Source – активное сообщество, множество плагинов и решений
6. Использование в проектах
Этап | Возможности |
---|---|
Разработка | Запуск тестовых сред локально (Minikube, Kind, Docker Desktop) |
Тестирование | Быстрая проверка приложений в разных окружениях |
Деплой | Автоматический запуск и обновление сервисов |
CI/CD | Интеграция через ArgoCD, Flux, Jenkins X и другие инструменты |
Продуктовые среды | Масштабируемый запуск приложений в продакшене |
Обучение | Изучение DevOps-процессов, облачных технологий и микросервисов |
7. Альтернативы Kubernetes
Инструмент | Особенности |
---|---|
Docker Swarm | Встроенная оркестрация от Docker, проще, но менее функциональна |
Nomad (HashiCorp) | Легковесная система оркестрации, подходит для гетерогенных нагрузок |
Mesos / Marathon | Подходит для больших распределённых систем, но сложнее в освоении |
OpenShift (Red Hat) | Энтерпрайз-решение на основе Kubernetes с дополнительными функциями безопасности и управления |
8. Интеграции
Интеграция | Описание |
---|---|
CI/CD (Jenkins, GitLab CI, GitHub Actions) | Автоматизация деплоя в кластер |
Helm | Управление пакетами и зависимостями |
Prometheus / Grafana | Мониторинг и метрики |
Istio / Linkerd | Сервис-меш для микросервисной коммуникации |
ArgoCD / Flux | Инструменты GitOps для автоматического синхронизации кластера с кодом |
Cloud Providers (AWS, Azure, GCP) | Полностью управляемые решения K8s |