tencent cloud

容器服务

动态与公告
产品动态
公告
产品发布记录
产品简介
产品概述
产品优势
产品架构
应用场景
产品功能
基本概念
原生 Kubernetes 名词对照
容器服务高危操作
地域和可用区
开源组件
购买指南
购买指引
购买 TKE 标准集群
购买原生节点
购买超级节点
快速入门
新手指引
快速创建一个标准集群
入门示例
容器应用部署 Check List
集群配置
标准集群概述
集群管理
网络管理
存储管理
节点管理
GPU 资源管理
远程终端
应用配置
工作负载管理
服务和配置管理
组件和应用管理
弹性伸缩
容器登录方式
可观测配置
运维可观测性
成本洞察和优化
调度配置
调度组件概述
资源利用率优化调度
业务优先级保障调度
Qos 感知调度
安全和稳定性
容器服务安全组设置
身份验证和授权
应用安全
多集群管理
计划升级
备份中心
云原生服务指南
云原生 etcd
Prometheus 监控服务
TKE Serverless 集群指南
TKE 注册集群指南
实践教程
集群
Serverless 集群
调度
安全
服务部署
网络
发布
日志
监控
运维
Terraform
DevOps
弹性伸缩
容器化
微服务
成本管理
混合云
AI
故障处理
节点磁盘爆满排障处理
节点高负载排障处理
节点内存碎片化排障处理
集群 DNS 解析异常排障处理
集群 Kube-Proxy 异常排障处理
集群 API Server 网络无法访问排障处理
Service&Ingress 网络无法访问排障处理
Service&Ingress 常见报错和处理
Nginx Ingress 偶现 Connection Refused
CLB Ingress 创建报错排障处理
Pod 网络无法访问排查处理
Pod 状态异常与处理措施
授权腾讯云售后运维排障
CLB 回环问题
API 文档
History
Introduction
API Category
Making API Requests
Elastic Cluster APIs
Resource Reserved Coupon APIs
Cluster APIs
Third-party Node APIs
Relevant APIs for Addon
Network APIs
Node APIs
Node Pool APIs
TKE Edge Cluster APIs
Cloud Native Monitoring APIs
Scaling group APIs
Super Node APIs
Other APIs
Data Types
Error Codes
TKE API 2022-05-01
常见问题
TKE 标准集群
TKE Serverless 集群
运维类
隐患处理
服务类
镜像仓库类
远程终端类
事件类
资源管理类
服务协议
TKE Service Level Agreement
TKE Serverless Service Level Agreement
联系我们
词汇表
文档容器服务实践教程网络在 TKE 上使用 Pod 独立安全组

在 TKE 上使用 Pod 独立安全组

PDF
聚焦模式
字号
最后更新时间: 2026-01-20 14:20:31

介绍

本文主要描述用户如何在 TKE 的普通节点和原生节点上,使用 Pod 独立安全组能力(SecurityGroupPolicy,简称 SGP)。
在 TKE Serverless 集群中,已经提供了 SGP 支持,详情请参见 容器服务 Pod 安全组。但是 TKE 普通节点和原生节点因网络能力限制(Pod 使用 ENI 弹性网卡共享 IP)此前未实现该功能。本次 TKE 网络组件全面升级,利用 VPC 侧提供的中继网卡(Trunking ENI)能力,通过给 Pod 单独分配中继出来的子网卡,子网卡单独绑定安全组,从而实现 Pod 绑定独立安全组 SGP 能力。

方案优势

支持 Pod 级别绑定独立安全组。
Pod 单独占用 IP,调度灵活性进一步增强,固定 IP 可在同可用区节点上任意调度。
基于中继网卡实现,单独占用配额,不占用原有的弹性网卡辅助 IP 资源以及独立网卡资源。

使用场景

减少暴露面,从而减少受到网络攻击的可能性。
通过安全组,可以让 Pod 配置其最小的暴露面,从而减少可能的攻击面,增强安全性。
最小粒度的网络安全策略控制。
Pod 绑定独立安全组实现了最小粒度的网络安全策略控制,更精准的控制每个应用的网络安全策略,从而增强集群整体安全性。
从虚拟机架构迁移到容器架构,复用应用已有的安全组。
传统虚机架构中,应用部署在虚机上,而安全组是绑定到虚拟机。从虚拟机架构迁移到容器架构后,使用 SGP 特性,这些安全组可以直接复用,从而保持原有的网络安全策略能力。

功能特性

支持与共享网卡方案共存,实现 Pod 粒度的方案设置和共存。
eniipamd 组件启用安全组功能时,Pod 设置安全组的优先级更高,其次按照 eniipamd 的安全组逻辑,继承节点的安全组设置(使用主网卡或者依照节点设置)。
同节点的 Pod 互访默认不经过安全组。

方案限制

节点上使用中继网卡的 Pod 数量受限于节点可绑定的中继网卡配额,目前默认为 100,最大 64C 机型支持 256。
目前仅支持 VPC-CNI 共享网卡 + 固定 IP 模式集群开启。
目前默认仅支持机型:“ITA5”、“M8”、“MA4”、“MA5”、“S8”、“S9”、“SA4”、“SA5”。其他机型添加到集群后,中继网卡配额会被赋值为0,禁止使用中继网卡独立安全组的 Pod 调度。如需使用其他机型,请 提交工单 申请网络侧支持。

使用方法

VPC 侧开启接口 client-token 白名单

中继网卡的创建强依赖于 VPC 侧接口开启 client-token 特性,当前该特性处于白名单管控阶段,请 提交工单 至 VPC 侧申请将用户主账号加入该白名单。
注意:
若未将账号添加至 VPC client-token 白名单,使用中继网卡过程中可能有资源泄露风险。

中继网卡相关接口授权

1. 访问管理控制台 > 策略 中,单击新建自定义策略
2. 选择按策略语法创建策略方式:
2.1 选择空白模板,单击下一步
2.2 策略名称可命名为 “SubENIForIPAMD”。复制并创建以下策略:
{
"statement": [
{
"action": [
"vpc:CreateSubNetworkInterface",
"vpc:DeleteSubNetworkInterface",
"cvm:CheckNetworkInterfaceSecurityGroupReady"
],
"effect": "allow",
"resource": [
"*"
]
}
],
"version": "2.0"
}
3. 单击完成
4. 创建完成后,在 访问管理控制台 > 角色 中,搜索 “IPAMDofTKE_QCSRole”。单击角色名称,在角色信息-权限中选择关联策略,勾选已创建完成的策略 “SubENIForIPAMD”,单击确定
5. 访问管理控制台 > 角色 中,搜索 “TKE_QCSRole”。单击角色名称,在角色信息-权限中选择关联策略,勾选已创建完成的策略 “SubENIForIPAMD”,单击确定
通过以上授权,赋予 TKE 及相关 tke-eni-ipamd 组件创建中继网卡和删除中继网卡接口的权限。

增量集群默认开启中继网卡功能

1. 增量集群默认开启该能力需添加白名单,请 提交工单 向容器服务申请权限。
2. 添加白名单后,创建集群时选择 vpc-cni 共享卡多 IP 模式,并开启固定 Pod IP,则会自动开启中继网卡模式。

存量集群开启中继网卡功能

开启条件如下:
集群限制:VPC-CNI 网络模式,共享网卡,并开启固定 Pod IP。
版本限制:3.5.6 及以上版本。
操作步骤如下:
1. 登录 容器服务控制台,选择左侧导航中的集群
2. 集群页面,选择目标集群名称,进入集群详情页。
3. 选择左侧导航栏中的组件管理,在组件页面选择 eniipamd组件 右侧的修改全局配置,将 “vpc-cni.trunking-eni.enable-sub-eni” 配置项改为 true,修改后保存并退出。


集群开启 SGP 能力

集群开启 Trunking ENI 能力后,即可在普通节点和原生节点上使用 SGP。操作步骤如下:
1. 登录 容器服务控制台,选择左侧导航中的集群
2. 集群页面,选择目标集群名称,进入集群详情页。
3. 选择左侧导航栏中的组件管理,在组件页面单击新建
4. 新建组件管理页面,勾选 SecurityGroupPolicy。如下图所示:

5. 单击完成
6. 请在 安全组页面 创建 Pod 需要的安全组,例如 sg-xxxxyyyy。
7. 部署 SecurityGroupPolicy 的 CR,如下 yaml 文件。如果您更愿意根据服务账户标签选择 Pod,则可以替换 podSelector 为 serviceAccountSelector,必须指定其中一种类型的选择器。如果指定多个安全组,则所有安全组中的所有规则都会对选定的 Pod 有效,例如 yaml 文件中的 sg-xxxxyyyy。
apiVersion: vpcresources.tke.cloud.tencent.com/v1beta1
kind: SecurityGroupPolicy
metadata:
name: my-security-group-policy
namespace: my-namespace
spec:
podSelector:
matchLabels:
app: my-app
securityGroups:
groupIds:
- sg-xxxxyyyy
此后所有创建的 Pod,label 包含 app: my-app,都会使用 Trunking ENI 网络能力,并绑定 sg-xxxxyyyy 的安全组。
8. 进入 容器服务控制台,在集群的工作负载中,部署需要绑定安全组的应用,可参考如下 yaml 部署 nginx 的 deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
annotations:
labels:
app: my-app
spec:
terminationGracePeriodSeconds: 0
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
部署成功后,可以通过 kubectl get pod -oyaml,检查 Pod 相关信息,确认已经使用 Trunking ENI 能力,并绑定对应的安全组:

红框中关键信息说明如下:
# tke-sub-eni 表示 pod 已经使用了中继网卡
tke.cloud.tencent.com/networks: "tke-sub-eni"

# 表示该 pod 已经绑定了 pod 级别的安全组
tke.cloud.tencent.com/security-group-id: "sg-xx1,sg-xx2"

# 扩展资源,表示当前 pod 使用的 Trunking 网卡资源
tke.cloud.tencent.com/sub-eni: "1"
同时检查 Pod 使用的弹性网卡所关联的安全组是否符合预期,首先通过以下的命令获取 Pod 当前使用的中继网卡 ID:
kubectl -n <Pod 所在命名空间> get vipc <Pod 名称> -ojsonpath='{.metadata.labels.tke\\.cloud\\.tencent\\.com/eni-id}'
进入弹性网卡控制台,检索对应的中继网卡并进入其详情页并查看其关联的安全组:



帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈