Что такое Kubernetes?

«Что такое Kubernetes?» — вопрос из категории Kubernetes, который задают на 36% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные концепции, с которыми я работаю:

  • Кластер: Состоит из управляющих (control plane) и рабочих (worker) узлов.
  • Control Plane: Включает API-сервер (kube-apiserver), хранилище состояния кластера (etcd), планировщик (kube-scheduler) и контроллеры (controller manager).
  • Рабочий узел: Запускает контейнеры с помощью среды выполнения (например, containerd) и управляется компонентами Kubelet и Kube-proxy.
  • Pod: Базовая единица выполнения, содержащая один или несколько контейнеров с общими сетевыми и дисковыми пространствами.
  • Deployment: Контроллер, который управляет жизненным циклом набора идентиционных Pod'ов, обеспечивая обновления (rolling updates) и откаты.

Пример манифеста Deployment для веб-приложения:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      app: frontend
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
      - name: nginx
        image: nginx:1.21-alpine
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "128Mi"
            cpu: "100m"

На практике Kubernetes позволяет мне:

  • Обеспечивать отказоустойчивость: если Pod падает, K8s автоматически перезапускает его.
  • Масштабировать приложение вручную или автоматически (HPA) в зависимости от нагрузки.
  • Управлять конфигурациями и секретами централизованно.
  • Организовывать сетевое взаимодействие между сервисами внутри кластера через Service и Ingress ресурсы.