You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
网络
配置节点级容器网络参数
复制全文
下载 pdf
配置节点级容器网络参数
节点级容器网络参数用于为不同节点指定差异化的 Pod 网络配置,实现更细粒度的网络隔离与资源管理,本文介绍如何在 VKE 集群中配置节点级容器网络参数并完成结果验证。​
背景信息​
在 VKE 集群中,vpc-cni 组件中的 cello 负责进行 Pod 网络管理,包括:为 Pod 分配 IP 地址、绑定弹性网卡 ENI(Elastic Network Interface)等。在默认情况下,cello 的各项网络配置(例如 Pod 子网、安全组、ENI Quota、NetworkMode 等)均为集群级(Cluster Scope)配置,即集群中的节点使用共用同一份网络配置(cello-config)。更多详情,请参见 vpc-cni。​
集群级配置能满足大多数场景,但当集群内节点承载的业务差异较大时,这种统一的全局配置也会面临很多问题。例如:部分节点运行高密度 Pod、需要更激进的 IP 池化策略来加速 Pod 启动;部分节点承载特定业务、需要划分到独立的 Pod 子网或绑定专属安全组以满足网络隔离和安全合规要求;不同规格的节点对 ENI Quota 的需求也不尽相同等。​
为解决上述问题,VKE 支持节点级(Node Scope)的网络配置,您只需要自定义一份专属网络配置(ConfigMap),并在目标节点池或节点上使用 Label 指定该配置,即可实现节点级的差异化配置。该方案具备以下优势:​
  • 精细化管控:以节点为最小粒度调整网络参数,无需为个别特殊节点改动全集群配置,避免"牵一发而动全身"。​
  • 灵活适配差异化业务:可针对不同业务节点分别设置 IP 池化策略、Pod 子网、安全组等,满足混合部署下的隔离与合规需求。​
  • 平滑兼容存量集群:节点级配置以"覆盖"方式生效,不影响未打 Label 的存量节点,变更风险可控。​
使用限制​
  • 仅 VPC-CNI 网络模型集群,支持配置节点级容器网络参数。​
  • 该配置默认仅对节点池中的新建节点生效;若需让存量节点生效,需要重启对应节点上的 vpc-cni 组件 Pod,由于重启可能影响已有业务运行,因此不建议直接在承载现网业务的存量节点上启用该功能。​
前提条件​
  • 已升级 vpc-cni 组件至 v1.6.0 及以上版本。详情请参见 vpc-cni。​
  • (可选)如需配置 Pod 安全组和子网,需在集群所属私有网络(VPC)内。已完成创建自定义的安全组和子网。详情请参见 创建安全组、创建子网。​
操作步骤​
  1. 通过 kubectl 连接目标集群。详细操作,请参见 连接集群。​
  1. 创建节点级容器网络参数的 ConfigMap。示例文件node-config.yaml代码如下:​
  • ​
    apiVersion: v1​
    kind: ConfigMap​
    metadata:​
    name: node-config1 # ConfigMap 名称​
    namespace: kube-system # ConfigMap 所属命名空间,支持自定义,建议配置为 kube-system 命名空间​
    data:​
    conf: |​
    {​
    "subnets": [ # 配置节点上 Pod 使用的子网​
    "subnet-2d6w87rhbgnb45********",​
    "subnet-zfedjv8bb8r8ob********"​
    ],​
    "securityGroups": [ # 配置节点上 Pod 使用的安全组​
    "sg-2bztk3p36bd342dx0********"​
    ],​
    "poolTarget": 3, # 节点上预留的 Pod 网络资源目标数量​
    "poolTargetMin": 5, # 节点上预留的 Pod 网络资源下限​
    "poolTargetLimit": 1 # 池化资源占节点可用配额的比例上限​
    }​
    ​
  • 关键网络功能和参数说明,如下表所示。​
  • ​
    网络功能​
    配置示例​
    说明​
    Pod 子网​
    ​
    "subnets": [​
    "subnet-2d6w87rhbgnb45********",​
    "subnet-zfedjv8bb8r8ob********"​
    ]​
    ​
    配置节点上 Pod 使用的子网。​
    建议在节点生命周期内保持该配置稳定,避免不同时间创建的 Pod 使用不同子网,增加网络连通性和运维复杂度。​
    Pod 安全组​
    ​
    "securityGroups": [​
    "sg-2bztk3p36bd342dx0********"​
    ]​
    ​
    配置节点上 Pod 使用的安全组。​
    建议在节点生命周期内保持该配置稳定,否则节点上的不同 Pod 可能使用不同安全组,导致访问策略不一致。​
    注意​
    该配置不允许指定托管安全组,否则导致功能异常。托管安全组说明,请参见 安全组概述。​
    池化参数​
    ​
    "poolTarget": 3,​
    "poolTargetMin": 5,​
    "poolTargetLimit": 1​
    ​
    cello IP 池化参数。系统通过该参数来管理 VPC ENI 和 IP 资源,以提升 Pod 创建速度。配置池化参数时,需要平衡 Pod 启动速度和 IP 资源消耗。包括:​
    • poolTarget:节点上预留的 Pod 网络资源目标数量。cello 会尽量提前准备这么多可用的 IP 或 ENI 资源,减少 Pod 创建时等待网络资源分配的时间。​
    • poolTargetMin:节点上预留的 Pod 网络资源下限。当可用资源低于该值时,cello 会尝试补充资源,避免节点在高频创建 Pod 时资源不足。​
    • poolTargetLimit:池化资源占节点可用配额的百分比,取值范围为 0~1,取值为 1 时,表示最多可占用节点可用配额的 100%。cello 会基于节点实例规格的 ENI 或 IP 配额计算可预留资源,避免池化资源占用过多节点网络配额。​
    ​
  1. 执行以下命令,创建 ConfigMap。​
  • ​
    kubectl apply -f node-config.yaml​
    ​
  1. 为节点池添加 节点标签,指定上一步创建的 ConfigMap。节点池的更多参数说明,请参见 编辑节点池。​
  • 标签键为vke.volcengine.com/vpc-cni-config。​
  • 标签值为kube-system.node-config1,其中kube-system和node-config1分别为 ConfigMap 的名称和所属命名空间。​
  • ​alt​​
注意​
如果出现 指定的配置项格式不正确 的错误提示,请自行通过 JSON 校验器检查 ConfigMap 中conf字段的格式。​
结果验证​
配置完成后,您可以扩容节点池,确认新扩容出的节点,是否使用了指定的节点级网络配置。本文以节点级子网和安全组为例。​
  1. 扩容节点池,使新扩容出的节点弹性网卡(ENI)能够使用指定 ConfigMap 中配置的安全组和子网。扩容节点池相关操作,请参见 扩缩容节点池。​
  • 本文以扩容一个新节点为例,如下图所示,扩容出名称为 node-qp6k6s 的节点。​
  • ​alt​​
  1. 查看新扩容出的节点 ENI 是否使用了指定的子网和安全组。​
  1. 在左侧导航栏中选择 实例与镜像 > 实例。​
  1. 通过节点名称,搜索目标实例后,单击实例名称。​
  1. 在实例详情页面的 网卡 页签,查看具有volc:vke:created-by=cello标签的辅助 ENI 是否使用了指定的安全组和子网。​
  • ​alt​​
  1. 将业务 Pod 调度到目标节点上。在实际业务中使用节点池级别 Pod 安全组和子网。​
  • 本文以配置无状态负载(Deployment)的节点亲和调度为例,将 Pod 调度到 Label 为vke.volcengine.com/vpc-cni-config: kube-system.node-config1的节点池内的 node-qp6k6s 节点上。配置无状态负载相关说明,请参见 管理无状态负载。​
  • ​alt​​
​
最近更新时间:2026.08.31 15:13:06
这个页面对您有帮助吗?
有用
有用
无用
无用