Kube-vip#
Kube-vip — это решение для обеспечения высокой доступности и балансировки нагрузки в кластерах, работающее на основе управления виртуальными IP-адресами (VIP). Kube-vip не требует установки внешних компонентов — он работает внутри самого кластера, используя нативные механизмы Kubernetes, такие как leader election и сетевые протоколы ARP/NDP или BGP.
Основные задачи и возможности
Высокая доступность API-сервера Kubernetes: Kube-vip может обеспечить отказоустойчивость плоскости управления, назначая виртуальный IP-адрес на один из мастер узлов. При падении текущего владельца
VIPавтоматически перемещается на другой доступный узел, обеспечивая непрерывный доступ к API-серверу.Реализация сервиса типа
LoadBalancer: Kube-vip может автоматически выделять и управлять виртуальными IP-адресами для сервисов типаLoadBalancer, что устраняет необходимость во внешнем балансировщике нагрузки вbare-metalиon-premiseокружениях.Поддержка нескольких режимов работы:
Режим
Layer 2(ARP/NDP): Kube-vip назначает виртуальный IP-адрес на сетевой интерфейс активного узла и отвечает наARP-запросы (для IPv4) илиNDP-запросы (для IPv6). При сбое узлаVIPперемещается на новый активный узел, который начинает отвечать на сетевые запросы.Режим
BGP: Kube-vip взаимодействует с внешними маршрутизаторами по протоколуBGP, анонсируя маршруты к виртуальному IP-адресу. Это обеспечивает балансировку трафика между узлами и более быстрое переключение при сбоях (ECMP).Режим
Control Plane Load Balancer: Kube-vip может также балансировать входящие соединения к API-серверу между несколькими мастер узлами с использованием встроенного TCP-балансировщика.
Основные компоненты Kube-vip:
kube-vip pod: разворачивается какstatic pod(для control plane) или какDaemonSet(для рабочих узлов). Отвечает за участие в выборах лидера, управление виртуальным IP-адресом на сетевом интерфейсе узла и взаимодействие поARP/BGP.Leader Election: встроенный механизм на основеKubernetes Lease, который определяет, какой узел в данный момент является активным владельцемVIP. При потере связи с текущим лидером автоматически инициируются новые выборы.Cloud Provider / IPAM: компонент, отвечающий за управление пулами IP-адресов и выдачу адресов сервисам типаLoadBalancer.
Конфигурация values#
Значения можно переопределить через редактирование инструмента с именем kube-vip и указанием нужных values в spec.values. Общее описание конфигурации values для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».
securityContext – параметры контекста безопасности контейнера
volumeMounts – дополнительные точки монтирования томов (VolumeMounts)
affinity – правила привязки (affinity и anti-affinity) pod к узлам
image – параметры контейнерного образа#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Путь к Docker-образу |
|
|
Политика загрузки образа. |
|
|
Тег образа контейнера |
|
config – основная конфигурация инструмента#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
|
|
env – параметры переменных окружения контейнера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Сетевой интерфейс для |
|
|
Включение ARP-вещания для |
|
|
Включение режима балансировки нагрузки |
|
|
Порт балансировщика нагрузки |
|
|
Маска подсети для |
|
|
Включение режима плоскости управления |
|
|
Включение режима обнаружения |
|
|
Включение |
|
|
Включение |
|
|
Адрес и порт Prometheus-сервера для метрик |
|
extraArgs – дополнительные аргументы#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Дополнительные аргументы для Kube-vip. |
|
envValueFrom – переменные окружения из источников#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Переменные окружения из источников |
|
envFrom – альтернативные источники переменных окружения#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Внешние |
|
extraLabels – дополнительные метки#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Дополнительные метки для |
|
annotations – общие аннотации для всех создаваемых ресурсов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Аннотации, добавляемые ко всем создаваемым ресурсам |
|
imagePullSecrets – Secret для загрузки образов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список |
|
nameOverride – переопределение имени чарта#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Переопределение базового имени ресурсов чарта для генерации имен |
|
fullnameOverride – полное переопределение имени чарта#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Полное переопределение имени для всех создаваемых ресурсов чарта |
|
namespaceOverride – переопределение пространства имен#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Переопределение пространства имен вместо значения по умолчанию |
|
serviceAccount – настройки сервисного аккаунта#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включение создания |
|
|
Аннотации, добавляемые ко всем создаваемым ресурсам |
|
|
Имя |
|
podAnnotations – аннотации pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Аннотации для pod |
|
podSecurityContext – параметры контекста безопасности pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Параметры контекста безопасности pod. |
|
securityContext – параметры контекста безопасности контейнера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Монтирование корневой файловой системы в режиме «только для чтения» |
|
|
Активация разрешения на эскалацию привилегий в контейнере |
|
|
Список добавляемых возможностей |
|
|
Список возможностей ( |
|
|
Профиль Seccomp для контейнера |
|
|
Тип профиля Seccomp |
|
updateStrategy – стратегия обновления ресурсов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Стратегия обновления ресурса |
|
|
Параметры постепенного обновления |
|
|
Максимальное количество недоступных pod при обновлении |
|
resources – запросы и ограничения ресурсов контейнера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Запрашиваемые ресурсы CPU для контейнера |
|
|
Запрашиваемые ресурсы памяти для контейнера |
|
|
Ограничение ресурсов CPU для контейнера |
|
|
Ограничение ресурсов памяти для контейнера |
|
volumes – дополнительные тома (Volume)#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Дополнительные тома ( |
|
volumeMounts – дополнительные точки монтирования томов (VolumeMounts)#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Дополнительные точки монтирования томов ( |
|
hostAliases – псевдонимы хостов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список псевдонимов хостов для добавления в |
|
nodeSelector – селектор узлов для планирования pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Селектор узлов для планирования pod |
|
tolerations – параметры Toleration для pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
|
|
affinity – правила привязки (affinity и anti-affinity) pod к узлам#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Настройки правила привязки ( |
|
podMonitor – настройки PodMonitor#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включение создания |
|
|
Метки для |
|
|
Аннотации, добавляемые ко всем создаваемым ресурсам |
|
priorityClassName – имя класса приоритета pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Имя |
|