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