Перейти к содержанию

Интеграция VXLAN Tunnel Endpoint (VTEP)

Интеграция VTEP позволяет сторонним устройствам напрямую обмениваться трафиком с подами Cilium через VXLAN.

Внимание

Требуется ядро Linux 5.2+

Примечание

VXLAN VNI должен быть настроен как 2 (соответствует идентичности world в Cilium).

Включение интеграции

Настройка через ConfigMap

Включить интеграцию VTEP можно отредактировав ConfigMap с именем cilium-config.

  1. Отредактируйте ConfigMap:

    kubectl edit configmap -n kube-system cilium-config
    

  2. Добавьте или обновите следующие параметры:

    • enable-vtep: установите значение "true", чтобы активировать функциональность VTEP.
    • vtep-endpoint: список IP-адресов удаленных VTEP-устройств (через пробел).
    • vtep-cidr: список CIDR-диапазонов, доступных через эти VTEP (через пробел).
    • vtep-mask: маска подсети (например, 255.255.255.0), общая для всех VTEP endpoint.
    • vtep-mac: список MAC-адресов удаленных VTEP-устройств (через пробел).

Важно

Списки vtep-endpoint, vtep-cidr и vtep-mac должны иметь одинаковое количество записей для корректной валидации (соотношение 1:1:1).

Например:

enable-vtep:   "true"
vtep-endpoint: "10.169.72.236    10.169.72.238"
vtep-cidr:     "10.1.1.0/24   10.1.2.0/24"
vtep-mask:     "255.255.255.0"
vtep-mac:      "82:36:4c:98:2e:56 82:36:4c:98:2e:58"

  1. Перезапустите Cilium агенты: Чтобы изменения вступили в силу, необходимо перезапустить все поды cilium:

    kubectl rollout restart ds/cilium -n kube-system
    

  2. Проверьте статус: После перезапуска убедитесь, что агенты перешли в состояние Running, и проверьте логи на отсутствие ошибок валидации VTEP.

    kubectl get po -n kube-system -l app.kubernetes.io/name=cilium-agent -w
    


Тестирование (Linux VM)

Запустите виртуальную машину Linux, расположенную в одном L2 широковещательном домене с узлами Cilium. Для настройки необходимы права суперпользователя root.

 Test VTEP Integration

 Node IP: 10.169.72.233
+--------------------------+            VM IP: 10.169.72.236
|                          |            +------------------+
| CiliumNode               |            |  Linux VM        |
|                          |            |                  |
|  +---------+             |            |                  |
|  | busybox |             |            |                  |
|  |         |           ens192<------>ens192              |
|  +--eth0---+             |            |                  |
|      |                   |            +-----vxlan2-------+
|      |                   |
|   lxcxxx                 |
|      |                   |
+------+-----cilium_vxlan--+
# создание VXLAN интерфейса
ip link add vxlan2 type vxlan id 2 dstport 8472 local 10.169.72.236 dev ens192
ip link set dev vxlan2 address 82:36:4c:98:2e:56
ip link set vxlan2 up
# Настройка адресации и маршрутизации
# Терминация адреса 10.1.1.236 на VTEP для приема трафика на CIDR 10.1.1.0/24
ip addr add 10.1.1.236/24 dev vxlan2
# Добавление маршрута на Pod CIDR кластера
ip route add 172.20.0.0/16 dev vxlan2
# ARP/FDB (FDB запись для отправки трафика на узел Cilium)
bridge fdb append 00:00:00:00:00:00 dst 10.169.72.233 dev vxlan2

Должна появиться связность между подами кластера и Linux VM.

# запуск ping до адреса пода на узле Cilium с Linux VM
ping 172.20.5.204

Ограничения

  • Несовместимо с IPsec-шифрованием между подами, управляемыми Cilium и устройствами VTEP.