Три публичных 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", воспользуемся этим.