TGViewer
CORTEL CORTEL @cortel_cloud · 4.07K subscribers
Post #2666 1.18K
➡️ MetalLB — система балансировки нагрузки для Kubernetes-кластеров, работающих в bare-metal окружениях.

Она реализует сервисы типа LoadBalancer без облачных провайдеров, назначая внешние IP-адреса и управляя трафиком на уровне L2 (ARP/NDP) или L3 (BGP).

⚫️ Зачем это нужно?

— Bare-metal кластеры
Предоставляет функционал LoadBalancer в локальных дата-центрах или на оборудовании без поддержки облачных провайдеров

— Простота использования
Автоматически назначает внешние IP-адреса из указанного пула

— Два режима работы
Поддержка L2 (для простых сетей) и L3 (для интеграции с корпоративной инфраструктурой)

— Прозрачная интеграция
Работает как стандартный Kubernetes-контроллер, не требуя изменений в приложениях

⚫️ Как работает?

Режим L2 (Уровень 2 — канальный):

— Назначает виртуальный IP (VIP) сервису типа LoadBalancer
— Отвечает на ARP-запросы (IPv4) или NDP-запросы (IPv6) для этого IP
— Трафик направляется на одну из нод кластера, которая затем распределяет его между подами
— Автоматический аварийное переключение при выходе ноды из строя

Режим L3 (Уровень 3 — сетевой):

— Устанавливает BGP-сессии с маршрутизаторами сети
— Анонсирует маршруты к виртуальным IP-адресам
— Трафик направляется напрямую на ноды с подами сервиса
— Поддерживает балансировку через ECMP (Equal-Cost Multi-Path)

⚫️ Конфигурация для режима L2:


apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: default-pool
namespace: metallb-system
spec:
addresses:
- 87.30.40.30-87.30.40.130

---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: default
namespace: metallb-system
spec:
ipAddressPools:
- default-pool


⚫️ Конфигурация для режима L3 (BGP):


apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: production-pool
namespace: metallb-system
spec:
addresses:
- 97.54.23.100/32
- 97.54.23.101/32

---
apiVersion: metallb.io/v1beta1
kind: BGPPeer
metadata:
name: router1
namespace: metallb-system
spec:
myASN: 64500
peerASN: 64501
peerAddress: 97.54.23.1
peerPort: 179

---
apiVersion: metallb.io/v1beta1
kind: BGPAdvertisement
metadata:
name: production
namespace: metallb-system
spec:
ipAddressPools:
- production-pool


⚫️ Пример использования


apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: LoadBalancer


После применения MetalLB автоматически назначит IP из пула:

kubectl get svc nginx-service -o jsonpath='{.status.loadBalancer.ingress[0].ip}'

# 87.30.40.30


🤓 MetalLB закрывает критический пробел в bare-metal Kubernetes, предоставляя полноценную поддержку LoadBalancer-сервисов.

Он превращает локальный кластер в производственную платформу, сопоставимую по возможностям с облачными предложениями, сохраняя при этом контроль над инфраструктурой.

#заметкиИнженера
  • 🔥 6
  • 👏 2
  • ❤ 1
  • 👍 1
More from @cortel_cloud
  1. Oct 1, 2026🖥 sed — потоковый редактор текста в Linux 🤓 Появился в Bell Labs в 1970-х и до сих пор и…
  2. Sep 29, 2026🖥 РАЗНИЦА Block, File и Object Storage 🧑‍🎓Повторение — мать учения. Для разных задач по…
  3. Sep 25, 2026😎 Когнитивная РАЗгрузка За неделю с горящими дедлайнами, часовыми ВКС и постоянным перекл…
  4. Sep 23, 2026💻 kubectl diff: обработка изменений в CI/CD kubectl diff сравнивает текущую конфигурацию…
  5. Sep 18, 2026🛡 ДА! У НАС ЦЕЛАЯ ЧЕРЕДА ПОЛЕЗНЫХ ЭФИРОВ ПРО ИБ! 🎙 Уже 24 сентября Вероника Нечаева, выс…
  6. Sep 16, 2026👩‍💻 Работа с ПДн это непрерывный процесс. Компания меняется — появляются новые сервисы,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →