-
Notifications
You must be signed in to change notification settings - Fork 454
使用ovs internal port 实现Pod NIC
oilbeater edited this page Jun 27, 2022
·
9 revisions
Wiki 下的中文文档将不在维护,请访问我们最新的中文文档网站,获取最新的文档更新。
通常情况下,CNI都是创建veth-pair来实现Pod与Node的流量互通。
可以使用ovs internal-port来实现Pod中的网卡,实现Pod与Node的流量互通。
连接不同Namespace的介绍,可以参考NetNs互联
从 kube-ovn v1.7.0 版本开始,支持使用 ovs internal-port 方式实现Pod通信网卡。
在安装脚本中,提供了环境变量POD_NIC_TYPE,用于设置是使用veth-pair方式还是internal-port方式来控制Pod的通信网卡实现方式。
POD_NIC_TYPE 取值,可以设置为 "veth-pair" 或者 "internal-port"。
POD_NIC_TYPE="veth-pair" # veth-pair or internal-port
在kube-ovn-controller的配置参数中,最后增加了pod-nic-type参数设置,默认使用"veth-pair"取值。
containers:
- name: kube-ovn-controller
image: "$REGISTRY/kube-ovn:$VERSION"
imagePullPolicy: $IMAGE_PULL_POLICY
command:
- /kube-ovn/start-controller.sh
args:
- --default-cidr=$POD_CIDR
- --default-gateway=$POD_GATEWAY
- --default-exclude-ips=$EXCLUDE_IPS
- --node-switch-cidr=$JOIN_CIDR
- --network-type=$NETWORK_TYPE
- --default-interface-name=$VLAN_INTERFACE_NAME
- --default-vlan-id=$VLAN_ID
- --pod-nic-type=$POD_NIC_TYPE
修改kube-ovn-controller deployment的args参数,会影响所有需要分配IP的Pod。针对单个Pod的设置,可以在创建Pod之前,在模板中为Pod添加annotation,指定NIC类型,然后创建Pod。
apiVersion: v1
kind: Pod
metadata:
annotations:
ovn.kubernetes.io/pod_nic_type: internal-port
labels:
app: perf1
name: perf1-pod
namespace: default