全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

VPC-CNI模式介绍

最近更新时间:2023-10-09 20:02:02

VPC-CNI模式介绍

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模式,操作步骤如下:

  1. 登录容器服务控制台

  2. 点击新建集群,在集群配置中进行集群网络相关配置,完成集群网络网络模型等配置后,点击开启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模式的Pod将经过此安全组。
      image20221129144403730.png
  3. 完成节点配置,选择合适机型用于部署VPC-CNI模式Pod:

    • 节点网络中需包含与容器网络相同可用区的子网,VPC-CNI模式Pod将被调度到相同可用区子网的节点上。
    • 选择机型时可参考机型支持的弹性网卡数以及VPC-CNI模式支持的Pod数量这两个参数,根据Pod数量需求选择满足要求的机型。
      image20221129150419876.png
    1. 完成其他配置并创建集群。

创建集群后,您可在集群基本信息中修改VPC-CNI相关配置,支持如下操作:

  • 开启VPC-CNI模式:为已有集群附加开启VPC-CNI模式,配置方式与创建集群时相同。
    image20221129155358617.png

  • 添加容器子网:在VPC-CNI模式开启状态下,您可点击容器子网>添加,增加容器网络可使用的子网。

  • 关闭VPC-CNI模式:关闭集群VPC-CNI模式,将卸载相关组件资源,关闭后集群仅支持Flannel网络模型。

    注意:关闭VPC-CNI模式前请确认已删除VPC-CNI模式的Pod,以免后续Pod变更影响业务访问。

创建VPC-CNI模式Pod

控制台创建

创建工作负载时,您可在高级配置中勾选VPC-CNI模式,开启该模式创建的Pod,将从集群配置的容器子网内分配IP地址。未开启该模式的Pod,将按照Flannel模式网段分配IP地址。

注:Deployment、StatefulSet、DaemonSet三种类型工作负载支持指定VPC-CNI模式。

image20221129231538887.png

通过Yaml创建

独占模式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: {}
文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈