Серия8 частейВиталий Лещенко

Отказоустойчивый Kubernetes на BGP

Серия о том, как с нуля собрать отказоустойчивый кластер Kubernetes, в котором и API-сервер, и сервисы типа LoadBalancer публикуются по BGP. Такой кластер работает у меня на виртуальных машинах Hyper-V, и на нём живёт, в том числе, этот блог.

Серия практическая: в каждой части — команды, конфигурация и то, на что я успел наступить. Порядок такой:

  • схема кластера и план;
  • подготовка узлов Ubuntu 24.04 — сеть, containerd, kubeadm, время;
  • BGP на роутере с FRR — фильтры, ECMP и правило файрвола для разворота трафика;
  • kube-vip в режиме BGP и первый мастер, затем остальные мастера;
  • Calico с eBPF вместо kube-proxy и рабочие узлы;
  • адреса сервисов LoadBalancer из Calico по BGP;
  • Traefik за BGP и почему важен externalTrafficPolicy: Local;
  • проверка отказоустойчивости, шпаргалка по диагностике и разбор ошибок.
  1. Часть 1

    Схема и план

    Первая статья серии о кластере Kubernetes, где адрес API-сервера (kube-vip) и адреса LoadBalancer (Calico) анонсируются по BGP: зачем, схема, адреса и AS.

  2. Часть 2

    Готовим узлы Ubuntu 24.04

    Подготовка узлов Kubernetes на Ubuntu 24.04: статический адрес, swap, модули и sysctl, containerd, kubeadm, время, автообновления и nr_cpus для Hyper-V.

  3. Часть 3

    BGP на роутере (FRR)

    BGP-маршрутизатор FRR на Linux для кластера Kubernetes: peer-group мастеров и воркеров, фильтры маршрутов, ECMP, таймеры и правило файрвола.

  4. Часть 4

    kube-vip в режиме BGP и первый мастер

    VIP для API-сервера Kubernetes через kube-vip в режиме BGP: статический под, health-check, kubeadm init с controlPlaneEndpoint, второй и третий мастер.

  5. Часть 5

    Calico с eBPF и рабочие узлы

    Calico через tigera-operator в режиме eBPF без kube-proxy: ConfigMap с адресом API, пул подов, рабочие узлы, проверка датаплейна и грабли оператора.

  6. Часть 6

    Адреса LoadBalancer из Calico по BGP

    Адреса сервисов LoadBalancer из Calico по BGP: BGPConfiguration, BGPPeer только для воркеров, пул с allowedUses, аннотация loadBalancerIPs и тест.

  7. Часть 7

    Traefik за BGP и externalTrafficPolicy Local

    Traefik за сервисом LoadBalancer с адресом из Calico по BGP: три реплики с anti-affinity, PodDisruptionBudget и почему нужен externalTrafficPolicy Local.

  8. Часть 8

    Проверка отказоустойчивости и разбор полётов

    Какие отказы закрывает BGP-схема кластера Kubernetes и за сколько, как их проверить, шпаргалка диагностики BGP, правила обслуживания и грабли.