上云无忧 > 文档中心 > 百度智能云容器引擎服务 CCE 容器网段空间耗尽如何继续扩容(VPC-CNI模式)
容器引擎服务CCE
百度智能云容器引擎服务 CCE 容器网段空间耗尽如何继续扩容(VPC-CNI模式)

文档简介:
注意:以下内容仅针对使用 “VPC-CNI”模式的集群。 概述: VPC-CNI 模式下,容器的 IP 来自 VPC 中的子网。随着集群规模扩大,ENI 子网中的 IP 可能耗尽,利用 CNI 提供的动态配置功能,可以给集群增加新的 ENI 子网。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠


注意:以下内容仅针对使用 “VPC-CNI”模式的集群

概述

VPC-CNI 模式下,容器的 IP 来自 VPC 中的子网。随着集群规模扩大,ENI 子网中的 IP 可能耗尽,利用 CNI 提供的动态配置功能,可以给集群增加新的 ENI 子网。

动态配置

背景介绍

CCE CNI 依赖一个配置文件提供创建 ENI 的参数,例如子网、安全组。

该配置文件的内容来自用户创建集群时选择的参数,并且以一个 ConfigMap 资源对象的形式存在于集群中。执行 kubectl get cm -n kube-system cce-cni-node-agent -o yaml 可以看到配置文件的详细内容。

一个配置文件样例:


cniMode: vpc-secondary-ip-auto-detect resyncPeriod: 60s cce: region: bd clusterID: cce-4978a9dd vpcID: vpc-gfbrt20nrnwt
 eniController: eniSubnetList: - sbn-0yeasaqzrqem - sbn-quuhn1ba5m38 securityGroupList:
 - g-h8h9v0wpbd0x routeTableOffset: 127 eniSyncPeriod: 30s


CNI 对于该配置文件的使用方式可以概括如下:

  1. 配置文件以 Volume 形式被挂载进 NodeAgent Pod 中,并被 NodeAgent 读取解析;
  2. NodeAgent 查找出配置中 eniSubnetList 中与本节点同可用区的所有子网;
  3. NodeAgent 为本节点创建出一个 IPPool 自定义资源(下文称为节点默认 IPPool), 并填入第2步中筛选出的同可用区的子网;
  4. IPAM 根据 IPPool 中包含的信息去为每个节点创建/挂载 ENI;

一个节点默认 IPPool 自定义资源的样例:


apiVersion: cce.io/v1alpha1 kind: IPPool metadata: name: ippool-192-168-0-227 namespace:
 default spec: eni: securityGroups: - g-h8h9v0wpbd0x subnets: - sbn-0yeasaqzrqem vpcID:
 vpc-gfbrt20nrnwt nodeSelector: kubernetes.io/hostname=192.168.0.227 priority: 0


可以注意到,节点默认 IPPool 的 priority 为 0,并且 nodeSelector 通过节点名称 label 只作用于单个节点。

使用说明

在此基础上,CCE CNI 还支持基于节点 label 为单节点指定动态配置文件的功能。结合 CCE 的节点组功能,能够支持节点粒度的网络划分、访问控制等精细化配置。

使用该功能需要 CCE CNI 版本大于 v1.2.2 。

一个普遍的使用方式:

  1. 用户提交 IPPool 自定义资源,注意 nodeSelector 与 priority 字段的填写;
  2. CCE Console 新建节点组时选择给节点添加标签,与第1步中 nodeSelector 匹配;
  3. 新加入集群的节点会使用用户提交的 IPPool 自定义资源进行 ENI 的创建、绑定;

图中用户提交的样例 IPPool 自定义资源:


apiVersion: cce.io/v1alpha1 kind: IPPool metadata: name: ippool-video namespace: default spec: eni: subnets:
 - sbn-zone-a-2 nodeSelector: app=video priority: 10


注:若给已有节点上配置自定义 IPPool,节点上之前已经申请到的相关资源(如ENI等)仍旧会保留在节点上,新申请的资源才会按照自定义 IPPool 进行创建。

关于 IPPool 匹配规则

  1. 遍历所有 IPPool,选出 nodeSelector 能够匹配节点 label 的所有 IPPool;
  2. 匹配节点 label 的所有 IPPool 根据 priority 从大到小排序;
  3. 选出 priority 最大的 IPPool 的 subnets 作为 ENI 子网,如果存在多个 IPPool 拥有相同且最大的 priority,则取它们 subnets 的并集;

注:nodeSelector 的格式与 k8s label selector 完全兼容


相似文档
  • K8S 配置字典(ConfigMap): ConfigMap 是 K8S 的一种 API 对象,用来将非机密性的数据保存到健值对中,用户在 CCE 可以通过页面或 kubectl 方式管理 ConfigMap。
  • 保密字典(Secret): Secret 是 K8S 提供一种 API 资源,用来保存敏感信息,例如密码、OAuth 令牌和 SSH 密钥等,用户可在 CCE 上通过 Console 及 kubectl 方式管理 Secret 资源。
  • 容器的特性决定了容器本身是非持久化的,容器被删除后容器内的数据也一并被删除,CCE 基于百度云存储产品,提供了容器数据共享和持久化解决方案,适用于大数据分析、媒体、游戏等很多场景。
  • emptyDir 类型的 Volume 在 Pod 分配到 Node 上时被创建,Kubernetes 会在 Node 上自动分配一个目录,因此无需指定宿主机 Node 上对应的目录文件,这个目录的初始内容为空。 当 Pod 从 Node 上移除时,emptyDir 中的数据会被永久删除。
  • 当前 CDS 磁盘支持以 FlexVolume 和 CSI 形式(要求集群k8s版本≥1.11)在集群中挂载。FlexVolume 形式支持直接在 Pod 中以 volume 方式挂载,CSI 形式挂载需要创建 PV 和 PVC 存储资源后,再将 PVC 挂载到 Pod 中。两种挂载方案都可以满足容器内特定数据持久化的需求,两者详细的区别请参考 kubernetes 官方文档: Volumes。 Persistent Volumes。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部