Модуль управления виртуальными IP-адресами (Kube VIP)

В платформе “Штурвал” Модуль управления виртуальными IP-адресами (Kube VIP) включает два компонента:

  • Компонент конфигурации сервисов (shturval-vip-provider). Он автоматически назначает IP-адреса сервисам (Services) с типом LoadBalancer.

Контроллер shturval-vip-provider, при создании Service с типом LoadBalancer в кластере, выделяет и назначает IP-адрес из сконфигурированного CIDR или диапазона IP-адресов. Выделенный IP-адрес указывается в аннотации и параметре loadBalancerIP сервиса. Как настроить CIDR или диапазон IP-адресов подробнее в разделе.

  • Компонент конфигурации узлов (shturval-vip). Shturval-vip является DaemonSet, который поднимает назначенные IP-адреса сервисам (Services) с типом LoadBalancer на узлах кластера. В случае удаления сервиса из кластера, назначенный сервису IP-адрес “освобождается” с узлов кластера.

Компоненты модуля управления виртуальными IP-адресами не требует ручной настройки.

С дополнительной информацией можно ознакомиться на официальном сайте.

Компонент конфигурации сервисов

Компонент конфигурации сервисов модуля управления виртуальными IP-адресами является критически важным сервисом для работы платформы “Штурвал” (недоступен для отключения). Устанавливается по умолчанию в кластер управления и клиентские кластеры.

Для просмотра состояния сервиса в кластере перейдите на страницу Установленные сервисы раздела Сервисы и репозитории. Найдите Модуль управления виртуальными IP-адресами. Компонент конфигурации сервисов (shturval-vip-provider) и нажмите Управлять.

Для корректной работы сервиса в кластере должен быть установлен и включен Модуль управления сетями кластера (shturval-networking).

Компонент конфигурации узлов

Компонент конфигурации узлов модуля управления виртуальными IP-адресами является критически важным сервисом для работы платформы “Штурвал” (недоступен для отключения). Устанавливается по умолчанию в кластер управления и клиентские кластеры.

Для просмотра состояния сервиса в кластере перейдите на страницу Установленные сервисы раздела Сервисы и репозитории. Найдите Модуль управления виртуальными IP-адресами. Компонент конфигурации узлов (shturval-vip) и нажмите Управлять.

Для корректной работы сервиса в кластере должен быть установлен и включен Модуль управления сетями кластера (shturval-networking).

Конфигурация доступных IP-адресов

Настроить CIDR или диапазон IP-адресов для выделения и назначения IP-адресов Service с типом LoadBalancer вы можете в ConfigMap. Для этого:

  1. В вашем кластере перейдите в неймспейс kube-system и откройте страницу ConfigMaps раздела Хранилище.
  2. Найдите ConfigMap с именем kubevip и перейдите к редактированию. Если нет ConfigMap, создайте с именем kubevip.
  3. Добавьте ключ, где в имя пропишите необходимый параметр, а в значении укажите CIDR или диапазон IP-адресов.
Перечень параметров
Параметр Описание Пример
cidr-global Глобальная подсеть, из которой будут выделяться IP-адреса для Service любого неймспейса кластера 192.168.0.216/29
range-global Глобальный диапазон IP-адресов, из которого будут выделяться IP-адреса для Service любого неймспейса кластера 192.168.1.220-192.168.1.230
cidr-<namespacename> Подсеть, из которой будут выделяться IP-адреса для Service определенного неймспейса 192.168.0.216/29
range-<namespacename> Диапазон IP-адресов, из которого будут выделяться IP-адреса для Service определенного неймспейса 192.168.1.220-192.168.1.230
Пример конфигурации глобального CIDR
apiVersion: v1
kind: ConfigMap
metadata:
  name: kubevip
  namespace: kube-system
data:
  cidr-global: 192.168.0.216/29
Пример конфигурации для Service определенных неймспейсов
apiVersion: v1
kind: ConfigMap
metadata:
  name: kubevip
  namespace: kube-system
data:
  cidr-mynamespace: 192.168.0.216/29
  range-mynamespace1: 192.168.1.220-192.168.1.230

После создания кластера, где не используется внешний балансировщик для Ingress, соответствующий IP-адрес системного Ingress Controller будет записан в ConfigMap kubevip.

Пример ConfigMap kubevip
apiVersion: v1
kind: ConfigMap
metadata:
  name: kubevip
  namespace: kube-system
data:
  cidr-ingress: 192.168.0.220/32

Если для неймспейса задан пул (CIDR или диапазон IP-адресов), Services будут назначаться только адреса из этого пула, игнорируя глобальный пул.

При необходимости вы можете задать вручную IP-адрес для Service с типом LoadBalancer одним из способов, даже если этот адрес не входит в заданный диапазон IP-адресов:

  • добавить аннотацию c ключом kube-vip.io/loadbalancerIPs для Service;
  • при создании Service в графическом интерфейсе задать IP-адрес в поле LoadBalancerIP.
×