ENIGMA AI
ENIGMA AI

Что такое Kubernetes?

встречается 20× Kubernetes junior devops

Как ответить

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

Для разработчика важно понимать базовую архитектуру и основные абстракции, с которыми придется работать ежедневно:

  • Pod (Под) — минимальная единица развертывания. Внутри пода живет один или несколько контейнеров, которые делят общие ресурсы (сеть и хранилище). Обычно это один контейнер с приложением и, возможно, вспомогательный sidecar-контейнер.
  • Deployment — объект, который описывает желаемое состояние приложения. Например, вы указываете, что в кластере всегда должно быть запущено три экземпляра (реплики) вашего сервиса. Если один под упадет, Kubernetes сам его перезапустит.
  • Service — абстракция, которая определяет, как получить доступ к группе подов по сети. Поды эфемерны (их IP-адреса меняются при перезапуске), а Service дает стабильный IP или DNS-имя.
  • ConfigMap и Secret — инструменты для прокидывания конфигураций и паролей в контейнер через переменные окружения или файлы, чтобы не хранить их внутри образа.

Процесс работы обычно выглядит так: разработчик описывает нужные ресурсы в YAML-файлах и отправляет их в API-сервер Kubernetes через утилиту kubectl. Дальше в дело вступает Control Plane, который решает, на каких физических или виртуальных машинах (нодах) запустить эти поды, основываясь на доступных ресурсах (CPU и RAM).

Пример простейшего манифеста для запуска приложения:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"

Здесь мы не просто запускаем контейнер, но и сразу задаем лимиты ресурсов, что критично для стабильности кластера. Также Kubernetes берет на себя задачи Service Discovery, балансировки нагрузки и стратегий обновления (например, Rolling Update), когда новая версия приложения выкатывается постепенно без простоя сервиса.

Ключевые тезисы

  • Kubernetes — это оркестратор, решающий проблемы масштабирования и отказоустойчивости контейнеров.
  • Основные объекты: Pod, Deployment, Service, ConfigMap/Secret.
  • Декларативный подход: мы описываем желаемое состояние в YAML, а K8s его поддерживает.
  • Разделение на Control Plane (управление) и Worker Nodes (исполнение).

Что спросят дальше

  • — В чем разница между Deployment и StatefulSet?
  • — Как работают Liveness и Readiness пробы?
  • — Зачем нужны лимиты (limits) и запросы (requests) ресурсов?

Готовьтесь к собеседованию с ENIGMA AI

AI-суфлёр подсказывает ответы прямо на собеседовании в реальном времени — незаметно для интервьюера.

Скачать приложение