You need to enable JavaScript to run this app.
导航
配置节点池级别 Pod 安全组和子网
最近更新时间:2024.11.18 12:03:39首次发布时间:2023.08.04 19:17:11

容器服务支持为集群节点池单独指定 Pod 安全组和 Pod 子网,节点和 Pod 子网可分别进行不同的安全组限制,实现更细粒度的安全隔离。本文介绍如何实现节点池级别的网络配置。

使用限制

  • 仅 VPC-CNI 网络模型集群,支持配置节点池级别 Pod 安全组和子网。
  • 配置成功后仅在新建节点上申请的 ENI,以及存量节点重启后新申请的 ENI 上生效,因此建议您不要在存量节点上使用该功能。

前提条件

  • 已创建 VPC-CNI 网络模型的集群。详情请参见 创建集群
  • vpc-cni 组件已升级至 v1.6.0 及以上版本。详情请参见 升级组件
  • 已在集群所属私有网络(VPC)内创建 Pod 安全组和子网。详情请参见 创建安全组创建子网

操作步骤

  1. 通过 kubectl 连接目标 VPC-CNI 集群。详细操作,请参见 连接集群
  2. 创建带有指定 Pod 安全组和子网的 ConfigMap。示例文件node-config.yaml代码如下:
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: node-config1  # ConfigMap 名称。
      namespace: kube-system  # ConfigMap 所属命名空间,可自定义配置,建议配置 kube-system 命名空间。
    data:
      conf: |
        {
          "subnets": [
            "subnet-2d6w87rhbgnb45********",
            "subnet-zfedjv8bb8r8ob********"
          ],
          "securityGroups": [
            "sg-2bztk3p36bd342dx0********"
          ]
        }
    

    注意

    securityGroups不允许指定托管安全组,否则导致功能异常。托管安全组说明,请参见 安全组概述

  3. 执行以下命令,创建 ConfigMap。
    kubectl apply -f node-config.yaml
    
  4. 通过编辑节点池添加 节点标签(Label)的方式,为节点池内的节点指定上一步创建的 ConfigMap。
    Label 为vke.volcengine.com/vpc-cni-config: kube-system.node-config1,其中kube-systemnode-config1为 ConfigMap 中配置的 namespacename 参数的值。
    配置方法如下图所示。详细操作,请参见 编辑节点池
    alt
  5. 扩容节点池,使新扩容出的节点弹性网卡(ENI)能够使用指定 ConfigMap 中配置的安全组和子网。扩容节点池相关操作,请参见 扩缩容节点池
    本文以扩容一个新节点为例,如下图所示,扩容出名称为 node-qp6k6s 的节点。
    alt
  6. 查看新扩容出的节点 ENI 是否使用了指定的子网和安全组。
    1. 登录 云服务器控制台
    2. 在左侧导航栏中选择 实例与镜像 > 实例
    3. 通过节点名称,搜索目标实例后,单击实例名称。
    4. 在实例详情页面的 网卡 页签,查看具有volc:vke:created-by=cello标签的辅助 ENI 是否使用了指定的安全组和子网。
      alt
  7. 将业务 Pod 调度到目标节点上。在实际业务中使用节点池级别 Pod 安全组和子网。
    本文以配置无状态负载(Deployment)的节点亲和调度为例,将 Pod 调度到 Label 为vke.volcengine.com/vpc-cni-config: kube-system.node-config1的节点池内的 node-qp6k6s 节点上。配置无状态负载相关说明,请参见 管理无状态负载
    alt