Доступно только в Enterprise Edition.

Три публичных IP-адреса

Три публичных IP-адреса на трех front-узлах. Каждый виртуальный IP-адрес вынесен в отдельную VRRP-группу, таким образом, каждый адрес «прыгает» независимо от других, и если в кластере три узла с лейблами node-role.deckhouse.io/frontend: "", то каждый IP получит по своему master-узлу.

1apiVersion: deckhouse.io/v1alpha1
2kind: KeepalivedInstance
3metadata:
4  name: front
5spec:
6  nodeSelector: # Обязательно.
7    node-role.deckhouse.io/frontend: ""
8  tolerations:  # Опционально.
9  - key: dedicated.deckhouse.io
10    operator: Equal
11    value: frontend
12  vrrpInstances:
13  - id: 1 # Уникальный для всего кластера ID.
14    interface:
15      detectionStrategy: DefaultRoute # В качестве служебной сетевой карты используем ту, через которую проложен дефолтный маршрут.
16    virtualIPAddresses:
17    - address: 42.43.44.101/32
18      # В нашем примере адреса «прыгают» по тем же сетевым интерфейсам, по которым ходит служебный VRRP-трафик, поэтому мы не указываем параметр interface.
19  - id: 2
20    interface:
21      detectionStrategy: DefaultRoute
22    virtualIPAddresses:
23    - address: 42.43.44.102/32
24  - id: 3
25    interface:
26      detectionStrategy: DefaultRoute
27    virtualIPAddresses:
28    - address: 42.43.44.103/32

Шлюз с парой IP-адресов для LAN и WAN. В случае шлюза приватный и публичный IP друг без друга не могут и «прыгать» между узлами они будут вместе. Служебный VRRP-трафик в данном примере мы решили пустить через LAN-интерфейс, который мы определим с помощью метода NetworkAddress (считаем, что на каждом узле есть IP из этой подсети).

1apiVersion: deckhouse.io/v1alpha1
2kind: KeepalivedInstance
3metadata:
4  name: mygateway
5spec:
6  nodeSelector:
7    node-role.deckhouse.io/mygateway: ""
8  tolerations:
9  - key: node-role.deckhouse.io/mygateway
10    operator: Exists
11  vrrpInstances:
12  - id: 4 # ID "1", "2", "3" уже заняты в KeepalivedInstance "front" выше.
13    interface:
14      detectionStrategy: NetworkAddress
15      networkAddress: 192.168.42.0/24
16    virtualIPAddresses:
17    - address: 192.168.42.1/24
18      # В данном случае мы уже определили локальную сеть выше и можем не определять интерфейс для этого IP, не указав параметр interface.
19    - address: 42.43.44.1/28
20      interface:
21        detectionStrategy: Name
22        name: ens7 # На всех узлах интерфейс для публичных IP называется "ens7", воспользуемся этим.