Настройка Egress Gateway
Содержание
Описание Egress Gateway
Egress Gateway используется для контроля доступа Pods к внешней сети с помощью группы статических адресов и обладает следующими особенностями:
- Обеспечивает высокую доступность Active-Active через ECMP, позволяя горизонтально масштабировать пропускную способность
- Реализует быстрое переключение при сбое (<1 с) с помощью BFD
- Поддерживает IPv6 и dual-stack
- Позволяет тонко управлять маршрутизацией через NamespaceSelector и PodSelector
- Обеспечивает гибкое планирование Egress Gateway с помощью NodeSelector
В то же время Egress Gateway имеет следующие ограничения:
- Использует macvlan для базового сетевого подключения, требуя поддержки Underlay со стороны физической сети
- В режиме многократных экземпляров Gateway требуется несколько Egress IP
- В настоящее время поддерживается только SNAT; EIP и DNAT не поддерживаются
- В настоящее время не поддерживается запись отношений трансляции исходных адресов
Детали реализации
Каждый Egress Gateway состоит из нескольких Pods с несколькими сетевыми интерфейсами.
Каждый Pod имеет два сетевых интерфейса: один подключается к виртуальной сети для связи внутри VPC,
а другой соединяется с физической сетью через Macvlan для внешней сетевой коммуникации.
Трафик виртуальной сети в конечном итоге выходит во внешнюю сеть через NAT внутри экземпляров Egress Gateway.
Каждый экземпляр Egress Gateway регистрирует свой адрес в таблице маршрутизации OVN.
Когда Pod внутри VPC должен получить доступ к внешней сети,
OVN использует хеширование исходного адреса для передачи трафика на несколько адресов экземпляров Egress Gateway,
обеспечивая балансировку нагрузки. С увеличением количества экземпляров Egress Gateway
пропускная способность также масштабируется горизонтально.
OVN использует протокол BFD для опроса нескольких экземпляров Egress Gateway.
При сбое экземпляра Egress Gateway OVN помечает соответствующий маршрут как недоступный,
обеспечивая быстрое обнаружение и восстановление после отказа.
Примечания
- Поддержка Egress Gateway есть только в Kube-OVN CNI.
- Для работы Egress Gateway требуется Multus-CNI.
Использование
Создание Network Attachment Definition
Egress Gateway использует несколько сетевых интерфейсов для доступа как к внутренней, так и к внешней сети,
поэтому необходимо создать Network Attachment Definition для подключения к внешней сети.
Пример использования плагина macvlan с IPAM от Kube-OVN приведён ниже:
apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
name: eth1
namespace: default
spec:
config: '{
"cniVersion": "0.3.0",
"type": "macvlan",
"master": "eth1",
"mode": "bridge",
"ipam": {
"type": "kube-ovn",
"server_socket": "/run/openvswitch/kube-ovn-daemon.sock",
"provider": "eth1.default"
}
}'
---
apiVersion: kubeovn.io/v1
kind: Subnet
metadata:
name: macvlan1
spec:
protocol: IPv4
provider: eth1.default
cidrBlock: 172.17.0.0/16
gateway: 172.17.0.1
excludeIps:
- 172.17.0.2..172.17.0.10
- Интерфейс хоста, который подключается к внешней сети.
- Имя провайдера в формате
<network attachment definition name>.<namespace>
.
- Имя провайдера, используемое для идентификации внешней сети и ДОЛЖНО совпадать с указанным в NetworkAttachmentDefinition.
TIP
Вы можете создать Network Attachment Definition с любым CNI плагином для доступа к соответствующей сети.
Создание VPC Egress Gateway
Создайте ресурс VPC Egress Gateway, как показано в примере ниже:
apiVersion: kubeovn.io/v1
kind: VpcEgressGateway
metadata:
name: gateway1
namespace: default
spec:
replicas: 1
externalSubnet: macvlan1
nodeSelector:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- kube-ovn-worker
- kube-ovn-worker2
selectors:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: default
policies:
- snat: true
subnets:
- subnet1
- snat: false
ipBlocks:
- 10.18.0.0/16
- Namespace, в котором создаются экземпляры VPC Egress Gateway.
- Количество реплик экземпляров VPC Egress Gateway.
- Внешний подсеть, подключаемая к внешней сети.
- Node selectors, к которым применяется VPC Egress Gateway.
- Namespace и Pod селекторы, к которым применяется VPC Egress Gateway.
- Политики для VPC Egress Gateway, включая SNAT и применяемые подсети/ipBlocks.
- Включение SNAT для политики.
- Подсети, к которым применяется политика.
- IP-блоки, к которым применяется политика.
Данный ресурс создаёт VPC Egress Gateway с именем gateway1 в namespace default,
и следующие Pods будут выходить во внешнюю сеть через подсеть macvlan1:
- Pods в namespace default.
- Pods в подсети subnet1.
- Pods с IP в CIDR 10.18.0.0/16.
NOTICE
Pods, соответствующие .spec.selectors, всегда будут выходить во внешнюю сеть с включённым SNAT.
После создания проверьте ресурс VPC Egress Gateway:
$ kubectl get veg gateway1
NAME VPC REPLICAS BFD ENABLED EXTERNAL SUBNET PHASE READY AGE
gateway1 ovn-cluster 1 false macvlan1 Completed true 13s
Для просмотра дополнительной информации:
kubectl get veg gateway1 -o wide
NAME VPC REPLICAS BFD ENABLED EXTERNAL SUBNET PHASE READY INTERNAL IPS EXTERNAL IPS WORKING NODES AGE
gateway1 ovn-cluster 1 false macvlan1 Completed true ["10.16.0.12"] ["172.17.0.11"] ["kube-ovn-worker"] 82s
Для просмотра workload:
$ kubectl get deployment -l ovn.kubernetes.io/vpc-egress-gateway=gateway1
NAME READY UP-TO-DATE AVAILABLE AGE
gateway1 1/1 1 1 4m40s
$ kubectl get pod -l ovn.kubernetes.io/vpc-egress-gateway=gateway1 -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
gateway1-b9f8b4448-76lhm 1/1 Running 0 4m48s 10.16.0.12 kube-ovn-worker <none> <none>
Для просмотра IP-адресов, маршрутов и правил iptables в Pod:
$ kubectl exec gateway1-b9f8b4448-76lhm -c gateway -- ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: net1@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 62:d8:71:90:7b:86 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.11/16 brd 172.17.255.255 scope global net1
valid_lft forever preferred_lft forever
inet6 fe80::60d8:71ff:fe90:7b86/64 scope link
valid_lft forever preferred_lft forever
17: eth0@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UP group default
link/ether 36:7c:6b:c7:82:6b brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.16.0.12/16 brd 10.16.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::347c:6bff:fec7:826b/64 scope link
valid_lft forever preferred_lft forever
$ kubectl exec gateway1-b9f8b4448-76lhm -c gateway -- ip rule show
0: from all lookup local
1001: from all iif eth0 lookup default
1002: from all iif net1 lookup 1000
1003: from 10.16.0.12 iif lo lookup 1000
1004: from 172.17.0.11 iif lo lookup default
32766: from all lookup main
32767: from all lookup default
$ kubectl exec gateway1-b9f8b4448-76lhm -c gateway -- ip route show
default via 172.17.0.1 dev net1
10.16.0.0/16 dev eth0 proto kernel scope link src 10.16.0.12
10.17.0.0/16 via 10.16.0.1 dev eth0
10.18.0.0/16 via 10.16.0.1 dev eth0
172.17.0.0/16 dev net1 proto kernel scope link src 172.17.0.11
$ kubectl exec gateway1-b9f8b4448-76lhm -c gateway -- ip route show table 1000
default via 10.16.0.1 dev eth0
$ kubectl exec gateway1-b9f8b4448-76lhm -c gateway -- iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N VEG-MASQUERADE
-A PREROUTING -i eth0 -j MARK --set-xmark 0x4000/0x4000
-A POSTROUTING -d 10.18.0.0/16 -j RETURN
-A POSTROUTING -s 10.18.0.0/16 -j RETURN
-A POSTROUTING -j VEG-MASQUERADE
-A VEG-MASQUERADE -j MARK --set-xmark 0x0/0xffffffff
-A VEG-MASQUERADE -j MASQUERADE --random-fully
Захват пакетов в Pod Gateway для проверки сетевого трафика:
$ kubectl exec -ti gateway1-b9f8b4448-76lhm -c gateway -- bash
nobody@gateway1-b9f8b4448-76lhm:/kube-ovn$ tcpdump -i any -nnve icmp and host 172.17.0.1
tcpdump: data link type LINUX_SLL2
tcpdump: listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
06:50:58.936528 eth0 In ifindex 17 92:26:b8:9e:f2:1c ethertype IPv4 (0x0800), length 104: (tos 0x0, ttl 63, id 30481, offset 0, flags [DF], proto ICMP (1), length 84)
10.17.0.9 > 172.17.0.1: ICMP echo request, id 37989, seq 0, length 64
06:50:58.936574 net1 Out ifindex 2 62:d8:71:90:7b:86 ethertype IPv4 (0x0800), length 104: (tos 0x0, ttl 62, id 30481, offset 0, flags [DF], proto ICMP (1), length 84)
172.17.0.11 > 172.17.0.1: ICMP echo request, id 39449, seq 0, length 64
06:50:58.936613 net1 In ifindex 2 02:42:39:79:7f:08 ethertype IPv4 (0x0800), length 104: (tos 0x0, ttl 64, id 26701, offset 0, flags [none], proto ICMP (1), length 84)
172.17.0.1 > 172.17.0.11: ICMP echo reply, id 39449, seq 0, length 64
06:50:58.936621 eth0 Out ifindex 17 36:7c:6b:c7:82:6b ethertype IPv4 (0x0800), length 104: (tos 0x0, ttl 63, id 26701, offset 0, flags [none], proto ICMP (1), length 84)
172.17.0.1 > 10.17.0.9: ICMP echo reply, id 37989, seq 0, length 64
Политики маршрутизации автоматически создаются на OVN Logical Router:
$ kubectl ko nbctl lr-policy-list ovn-cluster
Routing Policies
31000 ip4.dst == 10.16.0.0/16 allow
31000 ip4.dst == 10.17.0.0/16 allow
31000 ip4.dst == 100.64.0.0/16 allow
30000 ip4.dst == 172.18.0.2 reroute 100.64.0.4
30000 ip4.dst == 172.18.0.3 reroute 100.64.0.3
30000 ip4.dst == 172.18.0.4 reroute 100.64.0.2
29100 ip4.src == $VEG.8ca38ae7da18.ipv4 reroute 10.16.0.12
29100 ip4.src == $VEG.8ca38ae7da18_ip4 reroute 10.16.0.12
29000 ip4.src == $ovn.default.kube.ovn.control.plane_ip4 reroute 100.64.0.3
29000 ip4.src == $ovn.default.kube.ovn.worker2_ip4 reroute 100.64.0.2
29000 ip4.src == $ovn.default.kube.ovn.worker_ip4 reroute 100.64.0.4
29000 ip4.src == $subnet1.kube.ovn.control.plane_ip4 reroute 100.64.0.3
29000 ip4.src == $subnet1.kube.ovn.worker2_ip4 reroute 100.64.0.2
29000 ip4.src == $subnet1.kube.ovn.worker_ip4 reroute 100.64.0.4
- Политика Logical Router, используемая VPC Egress Gateway для перенаправления трафика от Pods, указанных в .spec.policies.
- Политика Logical Router, используемая VPC Egress Gateway для перенаправления трафика от Pods, указанных в .spec.selectors.
Если необходимо включить балансировку нагрузки, измените .spec.replicas, как показано в примере:
$ kubectl scale veg gateway1 --replicas=2
vpcegressgateway.kubeovn.io/gateway1 scaled
$ kubectl get veg gateway1
NAME VPC REPLICAS BFD ENABLED EXTERNAL SUBNET PHASE READY AGE
gateway1 ovn-cluster 2 false macvlan Completed true 39m
$ kubectl get pod -l ovn.kubernetes.io/vpc-egress-gateway=gateway1 -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
gateway1-b9f8b4448-76lhm 1/1 Running 0 40m 10.16.0.12 kube-ovn-worker <none> <none>
gateway1-b9f8b4448-zd4dl 1/1 Running 0 64s 10.16.0.13 kube-ovn-worker2 <none> <none>
$ kubectl ko nbctl lr-policy-list ovn-cluster
Routing Policies
31000 ip4.dst == 10.16.0.0/16 allow
31000 ip4.dst == 10.17.0.0/16 allow
31000 ip4.dst == 100.64.0.0/16 allow
30000 ip4.dst == 172.18.0.2 reroute 100.64.0.4
30000 ip4.dst == 172.18.0.3 reroute 100.64.0.3
30000 ip4.dst == 172.18.0.4 reroute 100.64.0.2
29100 ip4.src == $VEG.8ca38ae7da18.ipv4 reroute 10.16.0.12, 10.16.0.13
29100 ip4.src == $VEG.8ca38ae7da18_ip4 reroute 10.16.0.12, 10.16.0.13
29000 ip4.src == $ovn.default.kube.ovn.control.plane_ip4 reroute 100.64.0.3
29000 ip4.src == $ovn.default.kube.ovn.worker2_ip4 reroute 100.64.0.2
29000 ip4.src == $ovn.default.kube.ovn.worker_ip4 reroute 100.64.0.4
29000 ip4.src == $subnet1.kube.ovn.control.plane_ip4 reroute 100.64.0.3
29000 ip4.src == $subnet1.kube.ovn.worker2_ip4 reroute 100.64.0.2
29000 ip4.src == $subnet1.kube.ovn.worker_ip4 reroute 100.64.0.4
Включение высокой доступности на основе BFD
Высокая доступность на основе BFD опирается на функцию VPC BFD LRP,
поэтому необходимо изменить ресурс VPC для включения BFD Port.
Пример включения BFD Port для default VPC:
apiVersion: kubeovn.io/v1
kind: Vpc
metadata:
name: ovn-cluster
spec:
bfdPort:
enabled: true
ip: 10.255.255.255
nodeSelector:
matchLabels:
kubernetes.io/os: linux
- Включение BFD Port.
- IP-адрес BFD Port, который ДОЛЖЕН быть валидным и не конфликтовать с другими IP/подсетями.
- Node selector для выбора узлов, на которых BFD Port работает в режиме Active-Backup.
После включения BFD Port на соответствующем OVN Logical Router автоматически создаётся LRP, выделенный для BFD:
$ kubectl ko nbctl show ovn-cluster
router 0c1d1e8f-4c86-4d96-88b2-c4171c7ff824 (ovn-cluster)
port bfd@ovn-cluster
mac: "8e:51:4b:16:3c:90"
networks: ["10.255.255.255"]
port ovn-cluster-join
mac: "d2:21:17:71:77:70"
networks: ["100.64.0.1/16"]
port ovn-cluster-ovn-default
mac: "d6:a3:f5:31:cd:89"
networks: ["10.16.0.1/16"]
port ovn-cluster-subnet1
mac: "4a:09:aa:96:bb:f5"
networks: ["10.17.0.1/16"]
- BFD Port, созданный на OVN Logical Router.
Далее установите .spec.bfd.enabled в true в VPC Egress Gateway. Пример:
apiVersion: kubeovn.io/v1
kind: VpcEgressGateway
metadata:
name: gateway2
namespace: default
spec:
vpc: ovn-cluster
replicas: 2
internalSubnet: ovn-default
externalSubnet: macvlan1
bfd:
enabled: true
minRX: 100
minTX: 100
multiplier: 5
policies:
- snat: true
ipBlocks:
- 10.18.0.0/16
- VPC, к которому принадлежит Egress Gateway.
- Внутренняя подсеть, к которой подключены экземпляры Egress Gateway.
- Внешняя подсеть, к которой подключены экземпляры Egress Gateway.
- Включение BFD для Egress Gateway.
- Минимальный интервал приёма BFD в миллисекундах.
- Минимальный интервал передачи BFD в миллисекундах.
- Множитель BFD, определяющий количество пропущенных пакетов до фиксации сбоя.
Для просмотра информации о VPC Egress Gateway:
$ kubectl get veg gateway2 -o wide
NAME VPC REPLICAS BFD ENABLED EXTERNAL SUBNET PHASE READY INTERNAL IPS EXTERNAL IPS WORKING NODES AGE
gateway2 vpc1 2 true macvlan Completed true ["10.16.0.102","10.16.0.103"] ["172.17.0.13","172.17.0.14"] ["kube-ovn-worker","kube-ovn-worker2"] 58s
$ kubectl get pod -l ovn.kubernetes.io/vpc-egress-gateway=gateway2 -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
gateway2-fcc6b8b87-8lgvx 1/1 Running 0 2m18s 10.16.0.103 kube-ovn-worker2 <none> <none>
gateway2-fcc6b8b87-wmww6 1/1 Running 0 2m18s 10.16.0.102 kube-ovn-worker <none> <none>
$ kubectl ko nbctl lr-policy-list ovn-cluster
Routing Policies
31000 ip4.dst == 10.16.0.0/16 allow
31000 ip4.dst == 10.17.0.0/16 allow
31000 ip4.dst == 100.64.0.0/16 allow
30000 ip4.dst == 172.18.0.2 reroute 100.64.0.4
30000 ip4.dst == 172.18.0.3 reroute 100.64.0.3
30000 ip4.dst == 172.18.0.4 reroute 100.64.0.2
29100 ip4.src == $VEG.8ca38ae7da18.ipv4 reroute 10.16.0.102, 10.16.0.103 bfd
29100 ip4.src == $VEG.8ca38ae7da18_ip4 reroute 10.16.0.102, 10.16.0.103 bfd
29090 ip4.src == $VEG.8ca38ae7da18.ipv4 drop
29090 ip4.src == $VEG.8ca38ae7da18_ip4 drop
29000 ip4.src == $ovn.default.kube.ovn.control.plane_ip4 reroute 100.64.0.3
29000 ip4.src == $ovn.default.kube.ovn.worker2_ip4 reroute 100.64.0.2
29000 ip4.src == $ovn.default.kube.ovn.worker_ip4 reroute 100.64.0.4
29000 ip4.src == $subnet1.kube.ovn.control.plane_ip4 reroute 100.64.0.3
29000 ip4.src == $subnet1.kube.ovn.worker2_ip4 reroute 100.64.0.2
29000 ip4.src == $subnet1.kube.ovn.worker_ip4 reroute 100.64.0.4
$ kubectl ko nbctl list bfd
_uuid : 223ede10-9169-4c7d-9524-a546e24bfab5
detect_mult : 5
dst_ip : "10.16.0.102"
external_ids : {af="4", vendor=kube-ovn, vpc-egress-gateway="default/gateway2"}
logical_port : "bfd@ovn-cluster"
min_rx : 100
min_tx : 100
options : {}
status : up
_uuid : b050c75e-2462-470b-b89c-7bd38889b758
detect_mult : 5
dst_ip : "10.16.0.103"
external_ids : {af="4", vendor=kube-ovn, vpc-egress-gateway="default/gateway2"}
logical_port : "bfd@ovn-cluster"
min_rx : 100
min_tx : 100
options : {}
status : up
Для просмотра BFD-сессий:
$ kubectl exec gateway2-fcc6b8b87-8lgvx -c bfdd -- bfdd-control status
There are 1 sessions:
Session 1
id=1 local=10.16.0.103 (p) remote=10.255.255.255 state=Up
$ kubectl exec gateway2-fcc6b8b87-wmww6 -c bfdd -- bfdd-control status
There are 1 sessions:
Session 1
id=1 local=10.16.0.102 (p) remote=10.255.255.255 state=Up
NOTICE
Если все экземпляры шлюза недоступны, исходящий трафик, к которому применяется VPC Egress Gateway, будет отброшен.
Параметры конфигурации
VPC BFD Port
Поля | Тип | Необязательно | Значение по умолчанию | Описание | Примеры |
---|
enabled | boolean | Да | false | Включение BFD Port. | true |
ip | string | Нет | - | IP-адрес, используемый BFD Port. Не должен конфликтовать с другими адресами. Поддерживаются IPv4, IPv6 и dual-stack. | 169.255.255.255 |
fdff::1 |
169.255.255.255,fdff::1 |
nodeSelector | matchLabels | object | Да | - | Селекторы меток для выбора узлов, на которых работает BFD Port. BFD Port привязывается к OVN HA Chassis Group выбранных узлов и работает в режиме Active/Backup. Если поле не указано, Kube-OVN автоматически выбирает до трёх узлов. Все ресурсы OVN HA Chassis Group можно просмотреть командой kubectl ko nbctl list ha_chassis_group. | Карта пар {ключ,значение}. | - |
matchExpressions | object array | Да | - | Список требований селектора меток. Требования объединяются логическим И. | - |
VPC Egress Gateway
Поля | Тип | Необязательно | Значение по умолчанию | Описание | Примеры |
---|
vpc | string | Да | Имя default VPC (ovn-cluster) | Имя VPC. | vpc1 |
replicas | integer/int32 | Да | 1 | Количество реплик. | 2 |
prefix | string | Да | - | Неизменяемый префикс имени развертывания workload. | veg- |
image | string | Да | - | Образ, используемый для развертывания workload. | docker.io/kubeovn/kube-ovn:v1
.14.0-debug |
internalSubnet | string | Да | Имя default подсети внутри VPC. | Имя подсети для доступа к внутренней/внешней сети. | subnet1 |
externalSubnet | Нет | - | ext1 |
internalIPs | string array | Да | - | IP-адреса для доступа к внутренней/внешней сети. Поддерживаются IPv4, IPv6 и dual-stack.
Количество указанных IP не должно быть меньше replicas.
Рекомендуется указать <replicas> + 1 для предотвращения крайних случаев с некорректным созданием Pod. | 10.16.0.101
fdff::1
169.255.255.255,fdff::1 |
externalIPs |
bfd | enabled | boolean | Да | false | Конфигурация BFD. | Включение BFD для Egress Gateway. | - |
minRX | integer/int32 | Да | 1000 | Минимальные интервалы приёма/передачи BFD в миллисекундах. | 500 |
minTX |
multiplier | integer/int32 | Да | 3 | Множитель BFD. | 1 |
policies | snat | boolean | Да | false | Политики исходящего трафика. | Включение SNAT/MASQUERADE. | true |
ipBlocks | string array | Да | - | IP-диапазоны, к которым применяется шлюз.
Поддерживаются как IPv4, так и IPv6. | 192.168.0.1 |
192.168.0.0/24 |
fd00::1 |
fd00::/120 |
subnets | string array | Да | - | Имя подсети VPC, к которой применяется шлюз.
Поддерживаются IPv4, IPv6 и dual-stack подсети. | subnet1 |
selectors | namespaceSelector | matchLabels | object | Да | - | Настройка политик исходящего трафика по селекторам namespace и Pod.
SNAT/MASQUERADE применяется к совпадающим Pods. | Селектор namespace. Пустой селектор меток соответствует всем namespace. | Карта пар {ключ,значение}. | - |
matchExpressions | object array | Да | - | Список требований селектора меток. Требования объединяются логическим И. | - |
podSelector | matchLabels | object | Да | - | Селектор Pod. Пустой селектор меток соответствует всем Pods. | Карта пар {ключ,значение}. | - |
matchExpressions | object array | Да | - | Список требований селектора меток. Требования объединяются логическим И. | - |
nodeSelector | matchLabels | object | Да | - | Node selector для выбора узлов, на которых развертывается workload.
Workload (Deployment/Pod) будет запускаться на выбранных узлах. | Карта пар {ключ,значение}. | - |
matchExpressions | object array | Да | - | Список требований селектора меток. Требования объединяются логическим И. | - |
matchFields | object array | Да | - | Список требований селектора полей. Требования объединяются логическим И. | - |
trafficPolicy | string | Да | Cluster | Эффективно только при включённом BFD.
Доступные значения: Cluster/Local.
При установке в Local исходящий трафик будет перенаправляться на экземпляр VPC Egress Gateway, работающий на том же узле, если он доступен.
Если экземпляр недоступен, трафик будет перенаправлен на другие экземпляры. | Local |
Дополнительные ресурсы