Настройка 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
  1. Интерфейс хоста, который подключается к внешней сети.
  2. Имя провайдера в формате <network attachment definition name>.<namespace>.
  3. Имя провайдера, используемое для идентификации внешней сети и ДОЛЖНО совпадать с указанным в 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
  1. Namespace, в котором создаются экземпляры VPC Egress Gateway.
  2. Количество реплик экземпляров VPC Egress Gateway.
  3. Внешний подсеть, подключаемая к внешней сети.
  4. Node selectors, к которым применяется VPC Egress Gateway.
  5. Namespace и Pod селекторы, к которым применяется VPC Egress Gateway.
  6. Политики для VPC Egress Gateway, включая SNAT и применяемые подсети/ipBlocks.
  7. Включение SNAT для политики.
  8. Подсети, к которым применяется политика.
  9. 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
  1. Политика Logical Router, используемая VPC Egress Gateway для перенаправления трафика от Pods, указанных в .spec.policies.
  2. Политика 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
  1. Включение BFD Port.
  2. IP-адрес BFD Port, который ДОЛЖЕН быть валидным и не конфликтовать с другими IP/подсетями.
  3. 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"]
  1. 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
  1. VPC, к которому принадлежит Egress Gateway.
  2. Внутренняя подсеть, к которой подключены экземпляры Egress Gateway.
  3. Внешняя подсеть, к которой подключены экземпляры Egress Gateway.
  4. Включение BFD для Egress Gateway.
  5. Минимальный интервал приёма BFD в миллисекундах.
  6. Минимальный интервал передачи BFD в миллисекундах.
  7. Множитель 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

ПоляТипНеобязательноЗначение по умолчаниюОписаниеПримеры
enabledbooleanДаfalseВключение BFD Port.true
ipstringНет-IP-адрес, используемый BFD Port.
Не должен конфликтовать с другими адресами. Поддерживаются IPv4, IPv6 и dual-stack.
169.255.255.255
fdff::1
169.255.255.255,fdff::1
nodeSelectormatchLabelsobjectДа-Селекторы меток для выбора узлов, на которых работает BFD Port.
BFD Port привязывается к OVN HA Chassis Group выбранных узлов и работает в режиме Active/Backup.
Если поле не указано, Kube-OVN автоматически выбирает до трёх узлов.
Все ресурсы OVN HA Chassis Group можно просмотреть командой kubectl ko nbctl list ha_chassis_group.
Карта пар {ключ,значение}.-
matchExpressionsobject arrayДа-Список требований селектора меток. Требования объединяются логическим И.-

VPC Egress Gateway

ПоляТипНеобязательноЗначение по умолчаниюОписаниеПримеры
vpcstringДаИмя default VPC (ovn-cluster)Имя VPC.vpc1
replicasinteger/int32Да1Количество реплик.2
prefixstringДа-Неизменяемый префикс имени развертывания workload.veg-
imagestringДа-Образ, используемый для развертывания workload.docker.io/kubeovn/kube-ovn:v1 .14.0-debug
internalSubnetstringДаИмя default подсети внутри VPC.Имя подсети для доступа к внутренней/внешней сети.subnet1
externalSubnetНет-ext1
internalIPsstring arrayДа-

IP-адреса для доступа к внутренней/внешней сети. Поддерживаются IPv4, IPv6 и dual-stack.
Количество указанных IP не должно быть меньше replicas.
Рекомендуется указать <replicas> + 1 для предотвращения крайних случаев с некорректным созданием Pod.

10.16.0.101

fdff::1

169.255.255.255,fdff::1
externalIPs
bfdenabledbooleanДаfalseКонфигурация BFD.Включение BFD для Egress Gateway.-
minRXinteger/int32Да1000Минимальные интервалы приёма/передачи BFD в миллисекундах.500
minTX
multiplierinteger/int32Да3Множитель BFD.1
policiessnatbooleanДаfalseПолитики исходящего трафика.Включение SNAT/MASQUERADE.true
ipBlocksstring arrayДа-

IP-диапазоны, к которым применяется шлюз.
Поддерживаются как IPv4, так и IPv6.

192.168.0.1
192.168.0.0/24
fd00::1
fd00::/120
subnetsstring arrayДа-

Имя подсети VPC, к которой применяется шлюз.
Поддерживаются IPv4, IPv6 и dual-stack подсети.

subnet1
selectorsnamespaceSelectormatchLabelsobjectДа-

Настройка политик исходящего трафика по селекторам namespace и Pod.
SNAT/MASQUERADE применяется к совпадающим Pods.

Селектор namespace. Пустой селектор меток соответствует всем namespace.

Карта пар {ключ,значение}.-
matchExpressionsobject arrayДа-Список требований селектора меток. Требования объединяются логическим И.-
podSelectormatchLabelsobjectДа-

Селектор Pod. Пустой селектор меток соответствует всем Pods.

Карта пар {ключ,значение}.-
matchExpressionsobject arrayДа-Список требований селектора меток. Требования объединяются логическим И.-
nodeSelectormatchLabelsobjectДа-

Node selector для выбора узлов, на которых развертывается workload.
Workload (Deployment/Pod) будет запускаться на выбранных узлах.

Карта пар {ключ,значение}.-
matchExpressionsobject arrayДа-Список требований селектора меток. Требования объединяются логическим И.-
matchFieldsobject arrayДа-Список требований селектора полей. Требования объединяются логическим И.-
trafficPolicystringДаCluster

Эффективно только при включённом BFD.
Доступные значения: Cluster/Local.
При установке в Local исходящий трафик будет перенаправляться на экземпляр VPC Egress Gateway, работающий на том же узле, если он доступен.
Если экземпляр недоступен, трафик будет перенаправлен на другие экземпляры.

Local

Дополнительные ресурсы