PuppyIP 资源中心
开发工具与网络 8 分钟 发布于 2026-11-12

Amazon EKS Auto Mode 支持 Pod 安全组:配置与容量边界

Amazon EKS Auto Mode 现在可用 SecurityGroupPolicy 为选中的 Pod 分配独立安全组,让共享节点上的工作负载按 Pod 隔离网络规则。上线前先确认集群版本与区域,再核对两类安全组限制、同节点流量、分支网卡容量和 IAM 权限。

Amazon EKS Auto Mode Pod 安全组 SecurityGroupPolicy Kubernetes 1.36 AWS VPC 分支网络接口

服务对象与地域限制

PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。

代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。

本文要点

  • EKS Auto Mode 的 SecurityGroupPolicy 使用 eks.amazonaws.com/v1,为新建且匹配的 Pod 注入资源声明;未匹配的 Pod 继续使用节点安全组。
  • Auto Mode 的 per-Pod API 与非 Auto Mode 的 vpcresources.k8s.aws/v1beta1 API 不兼容,迁移清单不能直接互换。
  • 最多 16 个安全组是策略解析上限,接口安全组配额默认仍为 5;同一节点的不同策略数量也有独立的性能建议。
  • 安全组会检查同节点 Pod 流量,分支接口会降低节点 maxPods;上线还要满足额外 IAM 权限并按顺序排查接口事件。

先确认集群和区域条件

该功能适用于运行 Kubernetes 1.36 或更高版本、且所在 AWS 区域支持 EKS Auto Mode 的集群。AWS 于 2026 年 11 月 11 日宣布将 Pod 安全组纳入 Auto Mode,功能本身不另收费用;这不表示集群、计算和网络资源免于 AWS 计费。

若把现有集群升级到 1.36 以上,相关控制面组件会在控制面的下一次重启后启动,可能需要数分钟。版本号刚更新时不要直接假设策略已可用,应等策略解析和工作负载实际状态确认。

区分按节点和按 Pod 分配安全组

Auto Mode 使用 SecurityGroupPolicy 为选中的 Pod 绑定一个或多个现有 EC2 安全组,并通过分支网络接口在 Pod 层执行规则。同一节点上的不同 Pod 因而可以使用不同安全组;既未匹配策略、也没有显式策略资源声明的 Pod 仍使用节点安全组。

NodeClass 的 podSecurityGroupSelectorTerms 是另一种范围:它为使用该 NodeClass 的节点上的所有 Pod 设置同一组安全组,不适合按应用区分同一节点上的 Pod。SecurityGroupPolicy 只选择现有组,不会创建安全组或自动补齐入站规则。

迁移前核对 API 与策略匹配

Auto Mode 的 Pod 策略 API 是 eks.amazonaws.com/v1,字段使用 securityGroupSelectorTerms;非 Auto Mode 的 Amazon VPC CNI 版本则是 vpcresources.k8s.aws/v1beta1,使用 securityGroups.groupIds。两者虽然都叫 SecurityGroupPolicy,却属于不同 API,清单不能直接互换;它们也不会替另一类节点执行策略。

一个 Pod 最多只能匹配一个策略,同时匹配多个策略会被拒绝;部署前应让策略选择器互不重叠。podSelector 与 serviceAccountSelector 至少设置一个;两者同时设置时 Pod 必须同时匹配,才会被策略选中。

把两类安全组数量限制分开看

安全组选择项会合并解析结果,单个策略最多可解析出 16 个安全组;这只是解析上限。实际分支接口仍受账户“每个网络接口的安全组数”配额限制,该配额默认是 5,超过账户配额但不超过 16 时,策略可能显示 SecurityGroupsResolved=True,随后在接口创建阶段出现 ENICreationFailed。

超过 16 个解析组会以 SecurityGroupsResolved=False 和 sg_quota_exceeded 报告。AWS 还建议同一节点不要承载超过 5 个不同的 SecurityGroupPolicy,以免调度延迟以及 Karpenter 和 kube-scheduler 的 CPU、内存消耗增加;策略数、解析组数和接口配额是三种不同限制。

按实际流量配置规则

分支接口上的安全组会检查 Pod 对外和 Pod 之间的流量,包括同一节点上的 Pod 流量。若同一策略下的 Pod 需要互通,应仅为实际需要的协议和端口添加自引用入站规则;不要为了排障直接开放所有入站流量。

固定的节点本地路径不经过 Pod 安全组检查,包括 实例元数据服务(IMDS)、EKS Pod Identity Agent、来自节点 IP 的 kubelet 健康与就绪探测和 CoreDNS,这些例外不可配置。在启用默认 enableV4Egress 的 IPv6 集群中,Pod 的 IPv4 出站流量经节点主网卡转发,使用节点安全组而非 Pod 安全组。

把网卡容量、网络模式和权限纳入计划

分支网络接口会占用节点 ENI 槽位并降低可用于普通 Pod 的 maxPods。Auto Mode 会为新节点按接口容量重新计算;已经加入集群的旧节点不会追溯更新,仍可能按旧容量接收 Pod,导致部分 Pod 等待接口。采用功能时应按容量规划受控节点替换或滚动更新,不要无计划删除生产节点。

该功能仅适用于 Auto Mode 内置网络,不支持替代 CNI 或网络策略插件。集群 IAM 角色除了 AmazonEKSNetworkingPolicy,还需要 ec2:CreateNetworkInterfacePermission 才能关联分支接口;缺少该权限可能使接口创建失败。

按状态排查,并在停用前完成清理

排查时先检查新建 Pod 是否有 webhook 注入的资源声明,再查看策略的 status.securityGroups 和 SecurityGroupsResolved。False 时按 no_sgs_matched、sg_quota_exceeded、invalid_spec 或 resolution_error 定位;True 只表示安全组选择成功,不代表分支接口已经就绪。 匹配策略解析失败时,Pod 会保持 Pending,不会自动改用节点安全组。

若 Pod 资源声明没有接口,查看对应 ResourceClaim 和 Warning 事件中的 ENICreationFailed,并核对账户接口配额、集群角色权限及安全组是否属于集群 VPC;也可确认控制器已生成 ResourceClaimTemplate。修复原因前不要盲目重试;持续失败后可能出现 SecurityGroupIsolated。

如果以后要关闭 Auto Mode,AWS 建议先在 Auto Mode 仍启用时让已受策略保护的工作负载平稳终止,再删除策略,并等待集群中不再有这些策略,让控制器释放分支接口并清理 finalizer。

资料来源

常见问题

Kubernetes 动态资源分配(DRA)会取代 SecurityGroupPolicy 吗?

不会。原生 DRA 可以让 Pod 直接引用控制器为策略生成的 ResourceClaimTemplate,从而绕过 webhook 的标签匹配和自动注入;策略仍负责解析并提供安全组。一个 Pod 仍只能引用一个策略模板。

新建策略会立刻修改已经运行的 Pod 吗?

文档说明 webhook 会为新建且匹配的 Pod 注入资源声明,不应假设已有 Pod 会被追溯修改。需要让现有工作负载使用独立安全组时,先检查 Pod 的资源声明,再安排受控替换。