最近更新时间:2023-10-09 20:02:02
VPC-CNI网络模式是基于CNI和VPC弹性网卡实现的容器网络模式,容器与节点分布在同一平面,适用于对时延有较高要求的场景。KCE在全局路由模型基础上,支持附加选择VPC-CNI模式,对有VPC-CNI模式需求的pod指定后开启,实现Pod独占弹性网卡和多Pod共享弹性网卡等能力。
独占弹性网卡:每个Pod使用独立的弹性网卡,网络性能相比于共享模式更有保障。考虑不同类型节点可使用的弹性网卡数量有限,单节点能支持的独占弹性网卡Pod密度更低。
共享弹性网卡:多个Pod共享一张弹性网卡,基于弹性网卡的辅助IP实现。
容器网络与节点网络属于同一VPC,开启VPC-CNI模式Pod的IP地址资源受所选子网限制,此子网不建议与其他云上资源共用(如云服务器、容器实例等)。
全局路由模式附加VPC-CNI模式的优势:对于没有VPC-CNI需求的Pod,默认仍使用全局路由模式,Pod网段不占用VPC的其他网段,可用IP资源丰富;对于有网络性能或特殊场景需求的Pod,可选择开启VPC-CNI模式,两种模式的Pod支持在集群中混合部署。
单节点内使用VPC-CNI模式的Pod数量受节点支持的弹性网卡数和弹性网卡可分配IP数量限制。
受当前弹性网卡使用范围限制,开启VPC-CNI模式仅支持运行在云服务器节点,不支持裸金属节点。
当前版本限制:仅支持集群类型为独立部署集群。
您可在创建集群时为集群开启VPC-CNI模式,操作步骤如下:
登录容器服务控制台。
点击新建集群,在集群配置中进行集群网络相关配置,完成集群网络、网络模型等配置后,点击开启VPC-CNI模式,完成VPC-CNI相关配置:
独占网卡:独占网卡模式下,每个VPC-CNI模式Pod有独立的弹性网卡,单个节点上支持的最大VPC-CNI模式Pod数=云服务器支持的弹性网卡数-1。
共享网卡:共享网卡模式下,多个VPC-CNI模式Pod共享一张弹性网卡,弹性网卡将申请多个辅助IP分配给不同的Pod,单个节点上支持的最大VPC-CNI模式Pod数=(云服务器支持的弹性网卡数-1)*(单个弹性网卡支持的私有IP数-1)。
不同机型支持的弹性网卡数和单网卡私有IP数可参考云服务器类型。
完成节点配置,选择合适机型用于部署VPC-CNI模式Pod:
创建集群后,您可在集群基本信息中修改VPC-CNI相关配置,支持如下操作:
添加容器子网:在VPC-CNI模式开启状态下,您可点击容器子网>添加,增加容器网络可使用的子网。
关闭VPC-CNI模式:关闭集群VPC-CNI模式,将卸载相关组件资源,关闭后集群仅支持Flannel网络模型。
注意:关闭VPC-CNI模式前请确认已删除VPC-CNI模式的Pod,以免后续Pod变更影响业务访问。
创建工作负载时,您可在高级配置中勾选VPC-CNI模式,开启该模式创建的Pod,将从集群配置的容器子网内分配IP地址。未开启该模式的Pod,将按照Flannel模式网段分配IP地址。
注:Deployment、StatefulSet、DaemonSet三种类型工作负载支持指定VPC-CNI模式。
独占模式yaml示例:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
ksyun-app: nginx-dp-eni
name: nginx-dp-eni
namespace: default
spec:
replicas: 5
selector:
matchLabels:
ksyun-app: nginx-dp-eni
template:
metadata:
annotations:
v1.multus-cni.io/default-network: kube-system/vpc-cni #使用vpc-cni模式
labels:
ksyun-app: nginx-dp-eni
spec:
containers:
- image: hub.kce.ksyun.com/ksyun/nginx:latest
imagePullPolicy: Always
name: nginx
resources:
requests:
ksyun/eni: 1 #申请独占网卡
limits:
ksyun/eni: 1 #申请独占网卡
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
共享模式yaml示例:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
ksyun-app: nginx-dp-eni
name: nginx-dp-eni
namespace: default
spec:
replicas: 5
selector:
matchLabels:
ksyun-app: nginx-dp-eni
template:
metadata:
annotations:
v1.multus-cni.io/default-network: kube-system/vpc-cni #使用vpc-cni模式
labels:
ksyun-app: nginx-dp-eni
spec:
containers:
- image: hub.kce.ksyun.com/ksyun/nginx:latest
imagePullPolicy: Always
name: nginx
resources:
requests:
ksyun/eni-private-ip: 1 #申请共享网卡
limits:
ksyun/eni-private-ip: 1 #申请共享网卡
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
纯净模式