Kubernetes с VIP

Вопрос или проблема

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

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

Proxmox CE: гипервизор, OPNSense: маршрутизатор между ISP и моей сетью, Kubernetes (Talos): ISO с поддержкой qemu-agent для работы с Proxmox

У меня 3 управляющих узла: k8s-cp-1, k8s-cp-2, k8s-cp-3 и k8s-cp-4. У меня 4 рабочих узла: k8s-w-1, k8s-w-2, k8s-w-3 и k8s-w-4. Все они являются виртуальными машинами в одном экземпляре Proxmox.

k8s-cp-X: 192.168.0.51-53, k8s-w-X: 192.168.0.54-57

(Все IP-адреса резервируются по MAC через DHCP и находятся вне (под) моего автоматического диапазона DHCP от 100 до 254)

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

Я пытаюсь создать VIP в OPNSense на 192.168.0.50, который переходит на мои управляющие узлы, чтобы я мог перенаправить свои сервисные порты на 192.168.0.50, а ингресс-менеджер обрабатывал остальное на основе имени хоста. Я создал VIP (как IP-алиас), но не знаю, как сделать часть с переключением. В моем понимании, я думаю, что пинг на .50 должен отвечать с IP-адреса одного из 3-х управляющих узлов, к которому сейчас происходит маршрутизация из VIP, но я не знаю, как это сделать.

Надеюсь, это все имеет смысл. О, и я думаю использовать Cilium в качестве балансировщика нагрузки и Traefik в качестве контроллера ингрессов, но открыт для предложений. У меня есть опыт работы с Traefik и Docker Swarm, вот почему я думал использовать его для Kubernetes.

Ответ или решение

Создание виртуального IP-адреса (VIP) в вашей среде Kubernetes с использованием OPNSense требует понимания нескольких ключевых аспектов настройки и управления сетями. В этой статье мы обсудим процесс настройки VIP в OPNSense для обеспечения отказоустойчивости в вашей локальной лаборатории, используя текущую архитектуру, основанную на Proxmox и Talos, с учетом вашего желания использовать Cilium и Traefik для балансировки нагрузки и управления ingress.

Структура вашей инфраструктуры

  • Proxmox CE: Гипервизор, на котором работают все ваши виртуальные машины.
  • OPNSense: Маршрутизатор между вашим интернет-поставщиком (ISP) и внутренней сетью.
  • Kubernetes (Talos): Используется для управления контейнерами.
  • Контрольные узлы Kubernetes: 3 контрольных узла (k8s-cp-1: 192.168.0.51, k8s-cp-2: 192.168.0.52, k8s-cp-3: 192.168.0.53).
  • Рабочие узлы Kubernetes: 4 рабочий узел (k8s-w-1: 192.168.0.54, k8s-w-2: 192.168.0.55, k8s-w-3: 192.168.0.56, k8s-w-4: 192.168.0.57).

Настройка VIP в OPNSense

Вы уже настроили VIP на OPNSense по адресу 192.168.0.50. Для обеспечения отказоустойчивости вам потребуется реализовать механизм, который будет следить за доступностью ваших контрольных узлов и переключать VIP между ними в случае сбоя.

Шаги по настройке

  1. Создание VIP в OPNSense:

    • Перейдите в Services > CARP и создайте новый виртуальный IP-адрес.
    • Убедитесь, что выбран класс сетей (например, IPv4), укажите VIP (192.168.0.50) и выберите интерфейс, на котором будет активен VIP.
    • Задайте VHID и Password, которые будут использоваться для обмена состоянием между вашими контрольными узлами.
  2. Настройка Failover:

    • Установите для каждого контроллера опции CARP:
      • Включите Synchronized States, чтобы изменения синхронизировались между контрольными узлами.
      • Используйте State Synchronization для синхронизации состояния между экземплярами.
    • Настройте Virtual Server в Firewall для управления доступом к VIP. Это можно сделать через NAT, чтобы перенаправить запросы на ваши контрольные узлы.
  3. Проверка доступности контрольных узлов:

    • Используйте встроенные средства мониторинга OPNSense для проверки доступности ваших контрольных узлов.
    • Вы можете использовать Ping или другие TCP/UDP проверки (например, HTTP), чтобы убедиться, что контрольные узлы работают.
  4. Настройка Cilium как Load Balancer:

    • Убедитесь, что Cilium установлена и правильно настроена в вашем кластере. Cilium использует функции сети, чтобы предоставить доступ и балансировку нагрузки внутри Kubernetes.
    • Настройте Services в Kubernetes с типом LoadBalancer, чтобы Cilium мог обрабатывать трафик, направляемый на VIP.
  5. Настройка Traefik в качестве Ingress-контроллера:

    • Установите Traefik в вашем кластере Kubernetes, следуя официальной документации.
    • Создайте Ingress ресурс, который будет связывать ваши сервисы с VIP (192.168.0.50) на основе хост имени. Убедитесь, что правила маршрутизации настроены корректно.

Проверка и тестирование конфигурации

После выполнения всех настроек рекомендуется протестировать систему, вызвав VIP (ping 192.168.0.50) и проверив, что трафик перенаправляется к работающему контрольному узлу. Выполните имитацию сбоя (например, отключите один из контрольных узлов) и подтвердите, что VIP автоматически перенаправляется к активному узлу.

Заключение

Подводя итог, настройка VIP в OPNSense с использованием протокола CARP в сочетании с правильной конфигурацией Kubernetes обеспечивает масштабируемое и отказоустойчивое решение для управления вашими сервисами. С учетом вашей инфраструктуры на Proxmox и ваших предпочтений по инструментам, такой подход позволит создать надежную среду для запуска приложений.

Оцените материал
Добавить комментарий

Капча загружается...