Как настраивал Kubernetes

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

Ответ

Я настраивал Kubernetes-кластеры как в облачных средах, так и on-premise. Основной стек: kubeadm для самостоятельной сборки, kops для AWS и Terraform с модулями для автоматизации инфраструктуры.

Типичный процесс для on-premise:

  1. Инициализация Control Plane:
    kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint="<LOAD_BALANCER_IP>"
  2. Установка CNI-плагина: Чаще всего использовал Calico из-за поддержки Network Policies. Устанавливается одним манифестом:
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  3. Присоединение worker-узлов: После инициализации получаем команду kubeadm join с токеном и применяем её на воркерах.

Для продакшена критически важны:

  • Высокая доступность Control Plane: Разворачивал несколько master-узлов за балансировщиком нагрузки (например, HAProxy).
  • Безопасность: Настройка RBAC с минимальными привилегиями, использование PodSecurityPolicies (или их аналогов в новых версиях), шифрование секретов в etcd, регулярный ротаций сертификатов.
  • Сетевая изоляция: Определение NetworkPolicies для ограничения трафика между неймспейсами и подами.
  • Управление ресурсами: Установка ResourceQuotas и LimitRanges на неймспейсы, чтобы избежать исчерпания ресурсов кластера.

Инфраструктура как код: Для воспроизводимости весь кластер описывал в Terraform (виртуальные машины, сеть, правила фаервола), а установку компонентов (Ingress Controller, мониторинг) — с помощью Helm-чартов. Мониторинг собирал через Prometheus Operator, логи — в Loki, трейсы — в Jaeger.