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