Какие основные объекты Kubernetes используются для запуска приложений?

Ответ

Kubernetes использует декларативные объекты для управления контейнеризированными приложениями. Основные из них — это рабочие нагрузки (workloads), которые определяют, как и где запускать контейнеры.

Ключевые объекты для запуска приложений:

  1. Deployment

    • Назначение: Управление stateless-приложениями (например, веб-серверы, API). Обеспечивает масштабирование (через replicas), а также стратегии плавного обновления (rolling update) и отката версий.
    • Пример манифеста:
      apiVersion: apps/v1
      kind: Deployment
      metadata:
      name: nginx-deployment
      spec:
      replicas: 3 # Запустить 3 экземпляра (пода)
      selector:
        matchLabels:
          app: nginx
      template: # Шаблон для создания подов
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.21.0
            ports:
            - containerPort: 80
  2. StatefulSet

    • Назначение: Управление stateful-приложениями (например, базы данных, брокеры сообщений). Гарантирует стабильные сетевые идентификаторы и постоянное хранилище для каждого экземпляра (пода).
  3. DaemonSet

    • Назначение: Гарантирует, что на каждом (или на определённых) узле кластера будет запущен один экземпляр пода. Используется для агентов мониторинга, сборщиков логов или сетевых плагинов.
  4. Job и CronJob

    • Назначение: Для задач, которые должны быть выполнены и завершены. Job запускает задачу один раз, а CronJob — по расписанию (аналогично cron в Linux).
  5. Pod

    • Назначение: Минимальная единица развертывания в Kubernetes. Обычно поды не создаются напрямую, а управляются объектами более высокого уровня, такими как Deployment или StatefulSet.