虽然目前还是 beta 版本,但已经被广泛采用
Cilium VTEP 集成(beta 版)
1. 一段话总结
Cilium的VXLAN Tunnel Endpoint(VTEP)集成(beta版) 支持第三方 VTEP 设备(如外部负载均衡器BIG-IP)通过 VXLAN 直接与 Cilium 管理的 Pod 收发流量,启用前需确保 Cilium 已在 K8s 集群正常安装且VTEP 设备配置好端点 IP、CIDR、MAC 地址(VXLAN 网络标识符 VNI 固定为2);
启用可通过 Helm 命令或修改cilium-config ConfigMap 配置相关参数(含 VTEP 端点 IP、CIDR、子网掩码、MAC 地址),并重启 Cilium 守护进程集;测试需在 Linux VM 配置 vxlan 设备、IP、路由及 ARP 广播规则后 ping Cilium 管理的 Pod,当前该功能存在不支持 Cilium 管理的 Pod 与 VTEP 间 IPsec 加密的限制。
3. 详细总结
一、功能基础信息
| 项目 | 详情 |
|---|---|
| 功能名称 | VXLAN Tunnel Endpoint(VTEP)Integration |
| 功能状态 | beta版,使用中若遇问题需提供反馈并在GitHub提交issue |
| 核心作用 | 允许第三方VTEP设备(如外部负载均衡器BIG-IP)通过VXLAN与Cilium管理的Pod直接收发流量 |
| 关键标识要求 | VXLAN 网络标识符(VNI)必须配置为2,代表 VTEP 流量对应 world 身份(参考Special Identities) |
二、前置准备条件
-
** Cilium 集群状态验证**
- 前提:Cilium 已正确安装在 Kubernetes 集群(参考 Cilium Quick Installation)
- 验证操作:执行
cilium status命令,确认 Cilium 处于正常运行状态
-
** VTEP 设备配置 **
-
需提前为VTEP设备配置以下参数:
-
VTEP 端点 IP(VTEP Endpoint IP)
-
VTEP CIDR(VTEP CIDR Ranges)
-
VTEP MAC 地址(VTEP MAC)
-
VNI:固定设为2
-
-
三、VTEP 集成启用步骤
该功能默认禁用,启用需配置 VTEP 相关参数并重启 Cilium,提供两种配置方式:
方式1:通过 Helm 命令配置
执行以下 Helm 升级命令,设置 VTEP 启用及相关参数(示例参数可根据实际环境替换):
helm upgrade cilium cilium/cilium --version 1.18.2 \
--namespace kube-system \
--reuse-values \
--set vtep.enabled="true" \
--set vtep.endpoint="10.169.72.236 10.169.72.238" \
--set vtep.cidr="10.1.1.0/24 10.1.2.0/24" \
--set vtep.mask="255.255.255.0" \
--set vtep.mac="82:36:4c:98:2e:56 82:36:4c:98:2e:58"
方式2:修改cilium-config ConfigMap配置
-
编辑
cilium-configConfigMap,添加/修改以下配置项:-
enable-vtep: "true" vtep-endpoint: "10.169.72.236 10.169.72.238" # 多个端点IP用空格分隔 vtep-cidr: "10.1.1.0/24 10.1.2.0/24" # 多个CIDR用空格分隔 vtep-mask: "255.255.255.0" # 子网掩码 vtep-mac: "82:36:4c:98:2e:56 82:36:4c:98:2e:58" # 多个MAC用空格分隔
-
-
重启 Cilium 守护进程集
-
配置完成后,执行以下命令重启Cilium以应用配置:
kubectl -n $CILIUM_NAMESPACE rollout restart ds/cilium(注:
$CILIUM_NAMESPACE为 Cilium 所在命名空间,通常为kube-system)
四、VTEP 集成测试流程
测试需准备一台与 Cilium 节点网络连通的 Linux VM,操作需root权限或通过sudo执行,具体步骤如下:
1. 测试环境说明
| 节点类型 | IP地址 | 关键设备/组件 |
|---|---|---|
| Cilium节点 | 10.169.72.233 | cilium_vxlan 设备、busybox Pod(eth0网卡) |
| Linux VM(VTEP) | 10.169.72.236 | ens192 网卡、vxlan2 设备 |
2. Linux VM配置步骤
-
创建并配置 vxlan2 设备
-
# 创建 vxlan2 设备,指定 VNI=2、目标端口 8472、本地IP(VM 的 ens192 IP) ip link add vxlan2 type vxlan id 2 dstport 8472 local 10.169.72.236 dev ens192 # 设置 vxlan2 设备的 MAC 地址(需与 Cilium 配置的 vtep-mac一致) ip link set dev vxlan2 address 82:36:4c:98:2e:56 # 启用 vxlan2 设备 ip link set vxlan2 up
-
-
配置 vxlan2 设备 IP
-
为 vxlan2 分配对应 VTEP CIDR(如10.1.1.0/24)的IP:
ip addr add 10.1.1.236/24 dev vxlan2 -
添加 Pod CIDR 路由
-
假设 Cilium 的 podCIDR 为10.0.0.0/16,添加路由使 VM 能访问 Pod 网络:
ip route add 10.0.0.0/16 dev vxlan2 proto kernel scope link src 10.1.1.236 -
配置 ARP 广播规则
-
允许 VM 通过 vxlan2 向 Cilium 节点发送 ARP 广播请求,用于 Pod IP 解析:
bridge fdb append 00:00:00:00:00:00 dst 10.169.72.233 dev vxlan2
3. 连通性测试
从 Linux VM ping Cilium 管理的Pod IP(示例为10.0.1.1),验证网络连通性:
ping 10.0.1.1
4. 多VTEP场景处理
若管理多个 VTEP 设备,需对每个 VTEP 实例重复上述 Linux VM 配置步骤,再按启用步骤配置 Cilium 以匹配各 VTEP 的 MAC、IP 及 CIDR 范围。
五、功能限制
当前 Cilium VTEP 集成功能存在明确限制:不支持 Cilium 管理的 Pod 与 VTEP 设备之间的 IPsec 加密,即两者间的流量无法通过 IPsec 协议进行加密传输。
4. 关键问题
问题1:在启用 Cilium VTEP 集成功能前,必须完成哪些前置配置?各配置有何关键要求?
答案:
需完成两方面前置配置,关键要求如下:
-
Cilium 集群配置:需确保 Cilium 已正确安装在 Kubernetes 集群(可参考官方 Cilium Quick Installation 文档),并通过执行
cilium status命令验证 Cilium 处于正常运行状态,这是功能启用的基础环境要求; -
VTEP 设备配置:需为 VTEP 设备提前配置 3 类参数,且存在强制要求——一是配置 VTEP 端点 IP(vtep-endpoint)、VTEP CIDR(vtep-cidr)、VTEP MAC 地址(vtep-mac),二是VXLAN 网络标识符(VNI)必须固定配置为 2,该 VNI 值对应 Cilium 的 world 身份(参考 Special Identities),不可自定义修改。
问题2:启用C ilium VTEP 集成有两种方式(Helm 命令、ConfigMap),两种方式的核心配置参数有哪些?如何确保配置生效?
答案:
-
核心配置参数:两种方式需配置的核心参数完全一致,包括4项关键内容:
vtep.enabled:设为"true",用于启用 VTEP 集成功能(默认禁用);vtep.endpoint:填写 VTEP 设备的端点IP,多个 IP 用空格分隔(如"10.169.72.236 10.169.72.238");vtep.cidr:填写 VTEP 设备对应的 CIDR 范围,多个 CIDR 用空格分隔(如"10.1.1.0/24 10.1.2.0/24");vtep.mask:填写 VTEP CIDR 对应的子网掩码(如"255.255.255.0");vtep.mac:填写 VTEP 设备的 MAC 地址,多个 MAC 用空格分隔(如"82:36:4c:98:2e:56 82:36:4c:98:2e:58")。
-
配置生效方式:无论通过哪种方式配置,最后必须执行重启 Cilium 守护进程集的命令,确保配置应用:
kubectl -n $CILIUM_NAMESPACE rollout restart ds/cilium(其中$CILIUM_NAMESPACE为Cilium 所在命名空间,通常是kube-system)。
问题3:如何验证 Cilium VTEP 集成功能是否正常工作?测试过程中需重点配置哪些关键网络规则?
答案:
-
验证方法:通过 Linux VM(与Cilium节点网络连通)测试与 Cilium 管理的 Pod 的连通性,核心步骤为:在 VM 完成 VTEP 相关配置后,执行
ping <Cilium Pod IP>(如ping 10.0.1.1),若能正常 ping 通,则说明 VTEP 集成功能工作正常。 -
测试需重点配置的网络规则:共2项关键规则,直接影响连通性验证:
- 路由规则:需在 VM 中添加到 Cilium podCIDR 的路由(如
ip route add 10.0.0.0/16 dev vxlan2 proto kernel scope link src 10.1.1.236),确保 VM 的流量能路由到 Cilium Pod 网络; - ARP 广播规则:需通过
bridge fdb append 00:00:00:00:00:00 dst <Cilium节点IP> dev vxlan2(如目标IP为10.169.72.233)配置 ARP 广播,允许 VM 通过 vxlan2 设备向 Cilium 节点发送 ARP 请求,以完成 Pod IP 的地址解析,否则无法建立 ICMP(ping)连接。
- 路由规则:需在 VM 中添加到 Cilium podCIDR 的路由(如