Skip to content

📘 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