Модуль управления виртуальными 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. Для этого:
- В вашем кластере перейдите в неймспейс
kube-systemи откройте страницу ConfigMaps раздела Хранилище. - Найдите ConfigMap с именем kubevip и перейдите к редактированию. Если нет ConfigMap, создайте с именем kubevip.
- Добавьте ключ, где в имя пропишите необходимый параметр, а в значении укажите 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.