Какие основные задачи решает Kubernetes?

«Какие основные задачи решает Kubernetes?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Kubernetes (K8s) — это система оркестрации контейнеризированных приложений с открытым исходным кодом. Её основное назначение — автоматизация развертывания, масштабирования и управления контейнерами.

Ключевые задачи и функции:

  1. Оркестрация и развертывание: Автоматический запуск контейнеров на кластере нод согласно декларативным конфигурациям (YAML-манифестам).
  2. Масштабирование: Автоматическое (Horizontal Pod Autoscaler) или ручное увеличение/уменьшение количества реплик приложения (Pods) на основе нагрузки или метрик.
  3. Отказоустойчивость и самовосстановление:
    • Перезапуск контейнеров при их падении.
    • Перераспределение Pods при отказе ноды.
    • Проверки жизнеспособности (Liveness, Readiness Probes).
  4. Сетевое взаимодействие и балансировка нагрузки:
    • Сервисы (Services) обеспечивают стабильную сетевую точку доступа к динамическому набору Pods.
    • Встроенная балансировка трафика между Pods.
  5. Управление конфигурацией и секретами:
    • ConfigMaps для хранения конфигурационных данных.
    • Secrets для безопасного хранения чувствительной информации (пароли, токены).
  6. Хранение данных: Поддержка подключения различных типов постоянных томов (Persistent Volumes) к контейнерам.

Пример Deployment для запуска 3 реплик приложения:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: app-container
        image: my-registry/my-app:v1.0
        ports:
        - containerPort: 8080
        envFrom:
        - configMapRef:
            name: app-config

Почему это важно: Kubernetes абстрагирует инфраструктуру, позволяя разработчикам декларативно описывать желаемое состояние приложения, а система сама приводит кластер к этому состоянию.