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

Ответ

Я настраивал 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.

Ответ 18+ 🔞

Эх, вспомнил, как эти ваши кубернетесы настраивал — ебать мои старые костыли, сколько нервов попили. И в облаках, и на своих железках, этот зоопарк. В общем, если своими руками — kubeadm в руки и погнали. Если в AWS — kops рулит. А если совсем по-взрослому, то всё на Terraform, чтобы одним махом всю эту ебучую инфраструктуру из кода поднять.

Вот как на своих серваках обычно делал, ёпта:

  1. Control Plane запуляем: Тут главное — сразу правильно ткнуть, куда мастер нода будет слушать.
    kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint="<LOAD_BALANCER_IP>"

    Если балансировщик не указать, потом будет овердохуища боли с добавлением мастеров.

  2. Сеть поднимаем: Без CNI-плагина все поды как слепые котята — нихуя друг друга не видят. Я в основном Calico ставил, он надёжный и политики сети поддерживает. Делается в одну строку, красота.
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  3. Воркеры цепляем: После инита мастер тебе команду kubeadm join выдает, с токеном. Эту мантру на всех рабочих узлах выполняешь — и они в стаю вливаются.

А теперь, чувак, самое важное для продакшена, где доверия ебать ноль:

  • Чтобы мастера не дохли: Один мастер — это пиздец, а не архитектура. Надо минимум три, и обязательно за балансировщиком (HAProxy тот же). Иначе любая поломка — и кластер накрылся медным тазом.
  • Безопасность, а то сядем: Это не игрушки. RBAC настраивай так, чтобы у каждого сервиса были только нужные права, ни хуя больше. Политики безопасности подов (PodSecurityPolicies или их аналоги), секреты в etcd шифруй, сертификаты вовремя меняй. Иначе какой-нибудь распиздяй что-нибудь накосячит, или того хуже.
  • Сеть изолируй: Запустил кучу микросервисов — сделай так, чтобы они общались только если надо. NetworkPolicies — твой лучший друг. Без них всё друг другу доступно, это как жить в коммуналке без дверей, волнение ебать.
  • Ресурсы считай: Без ResourceQuotas и LimitRanges какой-нибудь один жадный сервис всю память на ноде сожрёт и всех соседей похоронит. Выделяй лимиты, как скаредный бухгалтер.

Идеал — это когда всё как код: Виртуалки, сети, правила — всё на Terraform, чтобы воспроизвести кластер было вопросом одной команды. А всякие контроллеры, мониторинг (Prometheus Operator, чтоб его), логи (Loki) и трейсы (Jaeger) — это всё на Helm-чартах, как конструктор. Красота же!