Виталий Лещенко

Отказоустойчивый Kubernetes на BGP. Часть 8: проверка отказоустойчивости и разбор полётов

Всё построено, пора проверить на прочность. В этой части — какие отказы кто и за какое время замечает, как их воспроизвести, шпаргалка по диагностике BGP и правила обслуживания, которые я вывел из собственных ошибок.

Серия «Отказоустойчивый Kubernetes на BGP»

  1. Схема и план
  2. Готовим узлы Ubuntu 24.04
  3. BGP на роутере (FRR)
  4. kube-vip в режиме BGP и первый мастер
  5. Calico с eBPF и рабочие узлы
  6. Адреса LoadBalancer из Calico по BGP
  7. Traefik за BGP и externalTrafficPolicy Local
  8. Проверка отказоустойчивости и разбор полётов (эта статья)
Читать дальше
Виталий Лещенко

Отказоустойчивый Kubernetes на BGP. Часть 7: Traefik за BGP и externalTrafficPolicy Local

Механизм адресов готов. Осталось повесить на него нагрузку, ради которой всё затевалось: входящий HTTP(S)-трафик. В этой части ставим Traefik и разбираемся, почему для него важна одна строка — externalTrafficPolicy: Local.

Серия «Отказоустойчивый Kubernetes на BGP»

  1. Схема и план
  2. Готовим узлы Ubuntu 24.04
  3. BGP на роутере (FRR)
  4. kube-vip в режиме BGP и первый мастер
  5. Calico с eBPF и рабочие узлы
  6. Адреса LoadBalancer из Calico по BGP
  7. Traefik за BGP и externalTrafficPolicy Local (эта статья)
  8. Проверка отказоустойчивости и разбор полётов
Читать дальше
Виталий Лещенко

Отказоустойчивый Kubernetes на BGP. Часть 6: адреса LoadBalancer из Calico по BGP

Кластер работает, API отказоустойчив. Теперь научим Calico выдавать адреса сервисам type: LoadBalancer и анонсировать их роутеру. Отдельный MetalLB не нужен: Calico умеет и то, и другое.

Серия «Отказоустойчивый Kubernetes на BGP»

  1. Схема и план
  2. Готовим узлы Ubuntu 24.04
  3. BGP на роутере (FRR)
  4. kube-vip в режиме BGP и первый мастер
  5. Calico с eBPF и рабочие узлы
  6. Адреса LoadBalancer из Calico по BGP (эта статья)
  7. Traefik за BGP и externalTrafficPolicy Local
  8. Проверка отказоустойчивости и разбор полётов
Читать дальше
Виталий Лещенко

Отказоустойчивый Kubernetes на BGP. Часть 5: Calico с eBPF и рабочие узлы

Три мастера собраны, VIP работает, но кластер без сети. В этой части устанавливаем Calico, переводим его на eBPF вместо kube-proxy и присоединяем рабочие узлы.

Серия «Отказоустойчивый Kubernetes на BGP»

  1. Схема и план
  2. Готовим узлы Ubuntu 24.04
  3. BGP на роутере (FRR)
  4. kube-vip в режиме BGP и первый мастер
  5. Calico с eBPF и рабочие узлы (эта статья)
  6. Адреса LoadBalancer из Calico по BGP
  7. Traefik за BGP и externalTrafficPolicy Local
  8. Проверка отказоустойчивости и разбор полётов
Читать дальше
Виталий Лещенко

Отказоустойчивый Kubernetes на BGP. Часть 4: kube-vip в режиме BGP и первый мастер

Роутер готов ждать соседей, узлы подготовлены, пора создавать кластер. В этой части поднимем VIP для API-сервера с помощью kube-vip в режиме BGP, инициализируем первый мастер и присоединим остальные два.

Серия «Отказоустойчивый Kubernetes на BGP»

  1. Схема и план
  2. Готовим узлы Ubuntu 24.04
  3. BGP на роутере (FRR)
  4. kube-vip в режиме BGP и первый мастер (эта статья)
  5. Calico с eBPF и рабочие узлы
  6. Адреса LoadBalancer из Calico по BGP
  7. Traefik за BGP и externalTrafficPolicy Local
  8. Проверка отказоустойчивости и разбор полётов
Читать дальше
Виталий Лещенко

Отказоустойчивый Kubernetes на BGP. Часть 3: BGP на роутере (FRR)

В третьей части настраиваем сторону роутера. Кластера ещё нет, но роутер можно подготовить заранее: он заранее знает всех будущих соседей и будет ждать, пока они появятся.

Серия «Отказоустойчивый Kubernetes на BGP»

  1. Схема и план
  2. Готовим узлы Ubuntu 24.04
  3. BGP на роутере (FRR) (эта статья)
  4. kube-vip в режиме BGP и первый мастер
  5. Calico с eBPF и рабочие узлы
  6. Адреса LoadBalancer из Calico по BGP
  7. Traefik за BGP и externalTrafficPolicy Local
  8. Проверка отказоустойчивости и разбор полётов
Читать дальше
Виталий Лещенко

Отказоустойчивый Kubernetes на BGP. Часть 2: готовим узлы Ubuntu 24.04

Во второй части серии подготовим узлы. Всё в этой статье выполняется на каждом из восьми узлов (и на мастерах, и на воркерах), если не сказано иное.

Серия «Отказоустойчивый Kubernetes на BGP»

  1. Схема и план
  2. Готовим узлы Ubuntu 24.04 (эта статья)
  3. BGP на роутере (FRR)
  4. kube-vip в режиме BGP и первый мастер
  5. Calico с eBPF и рабочие узлы
  6. Адреса LoadBalancer из Calico по BGP
  7. Traefik за BGP и externalTrafficPolicy Local
  8. Проверка отказоустойчивости и разбор полётов
Читать дальше
Виталий Лещенко

Отказоустойчивый Kubernetes на BGP. Часть 1: схема и план

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

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

Серия «Отказоустойчивый Kubernetes на BGP»

Читать дальше
Виталий Лещенко

Ubuntu: расширяем раздел после чистой установки (LVM, fdisk)

После чистой установки Ubuntu Server с разметкой по умолчанию (LVM) корневая файловая система занимает только часть диска, примерно половину. Остальное место никуда не делось, просто оно никому не отдано. Исправляется это несколькими командами, причём без перезагрузки и без потери данных.

Что смотрим сначала

Перед любыми изменениями полезно увидеть, где именно лежит свободное место:

Читать дальше
Виталий Лещенко

VPN: Использование IPv6 в Windows 10+

Windows по умолчанию не добавляет маршрут IPv6 к VPN подключениям. Есть обходной путь:

В Windows 10 и, предположительно, во всех будущих версиях, где доступен PowerShell, вы можете использовать командлет MS PowerShell Add-VpnConnectionRoute. Этот командлет не позволяет добавить маршрут по умолчанию 0::/0. Однако в большинстве случаев маршрут по умолчанию через VPN вам и не нужен. На текущий момент (январь 2026) пространство IPv6 включает только блок 2000::/3 как Global Unicast, и добавление этого префикса полностью достаточно для маршрутизации всего трафика через VPN-интерфейс. Командлет позаботится о добавлении маршрута при подключении к VPN и его удалении при отключении. Также, в отличие от netsh, это обычно не требует прав администратора и полностью интегрировано с графическим интерфейсом Windows, что избавляет вас от необходимости использовать батч-файлы.

Add-VpnConnectionRoute -ConnectionName "<имя интерфейса>" -DestinationPrefix "2000::/3"
Читать дальше