📘 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 |