Amazon EKS 安全组要求和注意事项 - Amazon EKS

Amazon EKS 安全组要求和注意事项

本主题介绍 Amazon EKS 集群的安全组要求。

在创建集群时,Amazon EKS 将创建一个名为 eks-cluster-sg-my-cluster-uniqueID 的安全组。该安全组具有以下默认规则:

Rule type 协议 端口 目标

入站

全部

全部

自身

出站

全部

全部

0.0.0.0/0IPv4)或 ::/0(IPv6

Amazon EKS 使用以下标签对此安全组进行标记:

密钥
kubernetes.io/cluster/my-cluster owned
aws:eks:cluster-name my-cluster

Amazon EKS 会自动将此安全组关联到它还创建的以下资源:

  • 在您创建集群时创建的 2–4 个弹性网络接口(在本文档其余部分中称为网络接口)。

  • 您创建的任何托管节点组中节点的网络接口。

默认规则允许所有流量在集群和节点之间自由流动,并允许所有出站流量到任何目的地。在创建集群时,您可以(选择性地)指定您自己的安全组。如果您这样做,那么 Amazon EKS 还会将您指定的安全组与它为集群创建的网络接口关联起来。但是,它不会将它们与您创建的任何节点组关联起来。

您可以在AWS Management Console中集群的 Networking(联网)部分下,确定您的集群安全组的 ID。或者,您可以使用以下 AWS CLI 命令进行这项操作。

aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.clusterSecurityGroupId

限制集群流量

如果您需要限制集群与节点之间的开放端口,则可以删除默认规则并添加集群所需的以下最少规则:

Rule type 协议 端口 目标
入站 TCP

443

集群安全组
入站 TCP

10250

集群安全组
入站(CoreDNS) TCP 和 UDP 53 集群安全组
出站 TCP

443

集群安全组

出站 TCP

10250

集群安全组

出站(DNS) TCP 和 UDP 53 集群安全组

您还必须为以下流量添加规则:

  • 您预计节点要用于节点间通信的任何协议和端口。

  • 出站互联网访问,以便节点可以访问 Amazon EKS API 以在启动时进行集群自检和节点注册。如果您的节点没有互联网访问权限,请查看 私有集群要求 了解其他注意事项。

  • 从它们需要从中拉取镜像的 Amazon ECR 或其他容器注册表 API(例如 DockerHub)中拉取容器镜像的节点访问权限。有关更多信息,请参阅AWS一般参考中的AWS IP 地址范围

  • 节点访问 Amazon S3。

  • IPv4IPv6 地址需要单独的规则。

如果您考虑限制规则,我们建议您彻底测试您的所有 pods,然后再将更改的规则应用于生产集群。

如果您最初使用 Kubernetes 1.14eks.3 或更早版本的平台部署集群,则考虑以下事项:

  • 您可能还拥有控制面板和节点安全组。创建这些组时,它们包括上表中列出的限制规则。这些安全组不再需要,可以删除。但是,您需要确保集群安全组包含这些组所包含的规则。

  • 如果您直接使用 API 部署集群,或者使用 AWS CLI 或 AWS CloudFormation 之类的工具创建集群且在创建集群时您未指定安全组,则 VPC 的默认安全组应用到 Amazon EKS 创建的集群网络接口。