安全群组规则

本主题介绍 GKE on AWS 如何管理集群的 AWS 安全组规则,以及如何修改节点池和控制平面副本的防火墙规则。

安全群组和托管的 DNS

如果您使用托管的 DNS 服务器而不是 AWS 提供的 DNS,则您的控制平面节点池安全组必须允许 TCP 和 UDP 端口 53 上的出站流量。

控制平面安全群组

控制平面安全组会为每个控制平面副本的入站和出站 TCP 流量定义防火墙规则。

控制平面由 AWS 网络负载均衡器 (NLB) 后面的三个 EC2 实例组成。这些实例接受从其他节点、节点池节点和 NLB 上的 etcd 实例进行连接。控制平面实例还会建立与 Google 和 AWS 服务的出站 HTTPS 连接。

GKE on AWS 会创建一个托管式控制平面安全组,并将其附加到所有控制平面实例。您不应修改此群组中的规则。如果您需要添加更多安全群组规则,可以改为在创建集群时指定要挂接到控制层面的其他安全群组 ID。

默认控制平面安全组规则

这些是 GKE on AWS 附加到控制平面的默认规则。这些规则与您的安全组不完全匹配;表中每一行都可能扩展为多个 AWS 安全组规则。

类型 协议 Port(端口) 地址范围或 SG 说明
入站 TCP(集群版本 < 1.26) 443 VPC 的主要 CIDR 范围 允许通过 HTTPS 从节点池节点连接
入站 TCP(集群版本 >= 1.26) 443 节点池的子网 CIDR 范围 允许通过 HTTPS 从节点池节点连接(节点池使用的每个子网一条规则)
入站 TCP 2380 控制层面 SG 允许复制控制平面 etcd
入站 TCP 2381 控制层面 SG 允许复制控制平面 etcd 事件
入站 TCP(集群版本 < 1.26) 8132 VPC 的主要 CIDR 范围 允许来自节点池的 Konnectivity 连接
入站 TCP(集群版本 >= 1.26) 8132 节点池的子网 CIDR 范围 允许来自节点池节点的 Konnectivity 连接(节点池使用的每个子网一条规则)
入站 TCP 11872 控制平面 CIDR 范围 对负载均衡器进行 HTTP 健康检查
出站 TCP 443 0.0.0.0/0 允许出站 HTTPS
出站 TCP 2380 控制层面 SG 允许复制控制平面 etcd
出站 TCP 2381 控制层面 SG 允许复制控制平面 etcd 事件

节点池安全组

节点池安全组会为节点池中虚拟机的入站和出站 TCP 流量定义防火墙规则。

GKE on AWS 会创建一个托管式节点池安全组,并将其附加到所有节点池实例。您不应修改此群组中的规则。如果您需要添加更多安全群组规则,可以改为在创建节点池时指定要挂接到实例的其他安全群组 ID。

默认情况下,节点池虚拟机没有任何开放端口。如需允许传入流量,请在创建节点池时添加节点池安全组,并通过该安全组管理节点池所需的任何入站/出站规则。

默认节点池安全群组规则

这些是 GKE on AWS 附加到节点池的默认规则。这些规则与您的安全组不完全匹配;表中每一行都可能扩展为多个 AWS 安全组规则。

类型 协议 Port(端口) 地址范围或 SG 说明
入站 TCP 全部 节点池 SG 允许 pod 到 pod 的通信
出站 TCP 全部 节点池 SG 允许 pod 到 pod 的通信
出站 TCP 443 0.0.0.0/0 允许出站 HTTPS
出站 TCP 8132 控制层面 SG 允许与控制平面的 Konnectivity 连接
出站 TCP 8132 控制平面 CIDR 范围 允许与控制平面的 Konnectivity 连接

VPC 的次要 CIDR 地址块中的节点池

GKE on AWS 1.26 版及更高版本会自动创建和管理必要的安全组规则,以支持使用次要 VPC CIDR 地址块中子网的节点池。如果您使用的是这些版本之一,则无需创建自定义安全组或手动更新它们。

不过,在创建托管式控制平面安全组时,早期版本的 GKE on AWS 不会创建支持使用次要 VPC CIDR 地址块中子网的节点池的规则。

如需消除此限制,请为控制层面创建自定义安全群组。您在使用 --security-group-ids 标志创建集群时传递安全组 ID。或者,您也可以更新集群的安全群组

使用以下规则创建安全群组:

类型 协议 Port(端口) 地址范围或 SG 说明
入站 TCP 443 节点池范围(在 VPC 的次要 CIDR 地址块中) 允许通过 HTTPS 从节点池节点连接
入站 TCP 8132 节点池范围(在 VPC 的次要 CIDR 地址块中) 允许来自节点池的 Konnectivity 连接

后续步骤