KeepalivedInstance
Scope: Cluster
Version: v1alpha1
Custom resource для настройки keepalived-кластеров.
Один custom resource KeepalivedInstance
описывает один keepalived-кластер.
metadata.name
— имя кластера, используется в названиях подов.
- массив объектов
Определяет
tolerations
для подов с keepalived.Формат: стандартный список toleration. Поды инстанса унаследуют это поле как есть.
- строка
Определяет отношение ключа (key) к значению (value) — должен ли ключ быть равен (
Equal
) значению или допустимо существование ключа с любым значением.Указание
Exists
равносильно допуску любого значения для value, чтобы под с указанным toleration удовлетворял соответствующему taint.По умолчанию:
"Equal"
Допустимые значения:
Exists
,Equal
- целочисленный
Определяет период времени в секундах, в течение которого планировщик должен ждать, прежде чем выгнать (evict) под с узла, если toleration перестал удовлетворять taint’у (справедливо только для effect
NoExecute
, иначе игнорируется).Если не установлено, тогда под не будет выгнан с узла, если toleration перестал удовлетворять taint’у. Если установлен в ноль (или отрицателен), под будет выгнан с узла немедленно, если toleration перестал удовлетворять taint’у.
По умолчанию используется значение «не установлено».
- массив объектов
Обязательный параметр
Список инстансов VRRP внутри keepalived-кластера. По сути, список групп адресов, которые мигрируют между серверами одновременно и не могут работать друг без друга.
Не нужно путать
vrrpInstance
иKeepalivedInstance
.vrrpInstance
— это составная частьKeepalivedInstance
.Модуль
keepalived
настраивает VRRP-инстансы таким образом, чтобы все адреса (все группы) не собирались одновременно на одном узле, а распределялись равномерно по всем серверам.- объект
Обязательный параметр
Определяет, как вычислить интерфейс для служебного VRRP-трафика на узле.
- строка
Одна из трех возможных стратегий определения интерфейса для трафика VRRP:
Name
— задать имя интерфейса явно, с помощью параметраspec.vrrpInstances[].interface.name
. В этом случае все узлы должны иметь одинаковый интерфейс, который смотрит в нужную сеть (например, eth0);NetworkAddress
— найти на узле интерфейс с IP из этой подсети и использовать его;DefaultRoute
— использовать интерфейс, через который определен маршрут по умолчанию на узле (в таблице 254 «main»).
- строка
Интерфейс узла с IP-адресом из этой подсети будет использован как служебный в случае использования
detectionStrategy
=NetworkAddress
.Обязательный параметр в случае использования
detectionStrategy
=NetworkAddress
.Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
Пример:
1networkAddress: 192.168.42.0/24
- булевый
Возвращать ли IP на узел, который восстановился после аварии.
Если у вас один
vrrpInstance
, разумнее не перекидывать IP лишний раз, чтобы не трогать соединения. Если групп много и трафик большой, лучше вернуть, чтобы не допустить скопления всех групп на одном узле.По умолчанию используется значение
true
, то есть IP вернется на узел в случае, если он вернется в строй. - массив объектов
Обязательный параметр
Список IP-адресов, которые одновременно будут «прыгать» между серверами.
- объект
Необязательный параметр.
Интерфейс для привязки виртуального IP-адреса на узле. Аналогичен
spec.vrrpInstances[].interface
.Если не указать — будет использован основной, служебный интерфейс, который определен в
spec.vrrpInstances[].interface
.- строка
Одна из трех возможных стратегий определения интерфейса для привязки IP-адреса:
Name
— задать имя интерфейса явно, с помощью параметраspec.vrrpInstances[].virtualIPAddresses[].interface.name
. В этом случае все узлы должны иметь одинаковый интерфейс, который смотрит в нужную сеть (например, eth0);NetworkAddress
— найти на узле интерфейс с IP из этой подсети и использовать его;DefaultRoute
— использовать интерфейс, через который определен маршрут по умолчанию на узле (в таблице 254 «main»).
- строка
Интерфейс узла с IP-адресом из этой подсети будет использован как служебный в случае использования
virtualIPaddresses[].detectionStrategy
=NetworkAddress
.Обязательный параметр в случае использования
virtualIPaddresses[].detectionStrategy
=NetworkAddress
.Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
Пример:
1networkAddress: 192.168.42.0/24