集群 API 服务器端点 - Amazon EKS

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

集群 API 服务器端点

本主题可帮助您为 Amazon EKS 集群的 Kubernetes API 服务器端点启用私有访问,并限制或完全禁用通过互联网进行公有访问。

在创建新集群时,Amazon EKS 将为您用于与集群进行通信的托管 Kubernetes API 服务器(使用 Kubernetes 管理工具,如 kubectl)创建端点。默认情况下,此 API 服务器端点对于互联网是公有的,对 API 服务器的访问将使用 AWS Identity and Access Management(IAM)与本机 Kubernetes 基于角色的访问控制(RBAC)相结合的方式加以保护。此端点称为集群公共端点。还有一个集群私有端点。有关集群私有端点的更多信息,请参阅以下部分:集群私有端点

IPv6 集群端点格式

EKS 按以下格式为 2024 年 10 月之后创建的新 IPv6 集群创建唯一的双堆栈端点。IPv6 集群是您在群集的 IP 系列 (ipFamily) 设置中选择了 IPv6 的集群。

AWS

EKS 集群公共/私有端点:eks-cluster.region.api.aws

AWS GovCloud (US)

EKS 集群公共/私有端点:eks-cluster.region.api.aws

Amazon Web Services in China

EKS 集群公共/私有端点:eks-cluster.region.api.amazonwebservices.com.rproxy.govskope.ca.cn

注意

双堆栈集群端点已于 2024 年 10 月推出。有关 IPv6 的更多信息,请参阅 了解如何将 IPv6 地址分配给集群、容器组(pod)和服务。在 2024 年 10 月之前创建的集群,请改用以下端点格式。

IPv4 集群端点格式

EKS 采用以下格式为在集群的 IP 系列(ipFamily)设置中选择了 IPv4 的每个集群创建一个唯一的端点:

AWS

EKS 集群公共/私有端点 eks-cluster.region.eks.amazonaws.com

AWS GovCloud (US)

EKS 集群公共/私有端点 eks-cluster.region.eks.amazonaws.com

Amazon Web Services in China

EKS 集群公共/私有端点 eks-cluster.region.amazonwebservices.com.rproxy.govskope.ca.cn

注意

在 2024 年 10 月之前,IPv6 集群也使用此端点格式。对于这些集群,公共端点和私有端点都只有从此端点解析的 IPv4 地址。

集群私有端点

您可以启用对 Kubernetes API 服务器的私有访问,以便节点与 API 服务器之间的所有通信都在 VPC 内。您可以限制从 Internet 访问 API 服务器的 IP 地址,或完全禁用对 API 服务器的 Internet 访问。

注意

由于此端点用于 Kubernetes API 服务器,而不是用于与 AWS API 通信的传统 AWS PrivateLink 端点,因而不会在 Amazon VPC 控制台中显示为端点。

当您为集群启用端点私有访问时,Amazon EKS 将代表您创建一个 Route 53 私有托管区域,并将它与您的集群的 VPC 关联。这个私有托管区域由 Amazon EKS 管理,它不会出现在您的账户的 Route 53 资源中。为了使私有托管区域正确地将流量路由到您的 API 服务器,您的 VPC 必须将 enableDnsHostnamesenableDnsSupport 设置为 true,而且为 VPC 设置的 DHCP 选项必须在其域名服务器列表中包含 AmazonProvidedDNS。有关更多信息,请参阅 Amazon VPC 用户指南中的更新 VPC 的 DNS 支持

您可以在创建新集群时定义 API 服务器终端节点的访问要求,并且可以随时更新集群的 API 服务器终端节点访问。

修改集群终端节点访问

使用本节中的过程来修改现有集群的终端节点访问。下表显示了受支持的 API 服务器终端节点访问组合及其关联的行为。

终端节点公有访问 终端节点私有访问 行为

已启用

已禁用

  • 这是新 Amazon EKS 集群的默认行为。

  • 源自集群的 VPC 内的 Kubernetes API 请求(如控制面板通信的节点)会脱离 VPC,但不会脱离 Amazon 网络。

  • 集群 API 服务器可从 Internet 访问。您可以选择性地限制可访问公有终端节点的 CIDR 块。如果限制对特定 CIDR 块的访问,则建议您还启用私有端点,或者确保指定的 CIDR 块包括节点和 Fargate 容器组(pod)[如果您使用这些容器组(pod)] 用于访问公有端点的地址。

已启用

已启用

  • 集群的 VPC 内的 Kubernetes API 请求(如控制面板通信的节点)使用私有 VPC 端点。

  • 集群 API 服务器可从 Internet 访问。您可以选择性地限制可访问公有终端节点的 CIDR 块。

  • 如果在 Amazon EKS 集群中使用混合节点,则不建议同时启用公有和私有集群端点访问权限。由于混合节点在 VPC 之外运行,因此会将集群端点解析为公有 IP 地址。对于具有混合节点的集群,建议使用公有或私有集群端点访问权限。

已禁用

已启用

  • 传输到集群 API 服务器的所有流量都必须来自您的集群的 VPC 或连接的网络中。

  • 没有来自 Internet 的对 API 服务器的公有访问。所有 kubectl 命令都必须来自 VPC 或连接的网络中。对于连接选项,请参阅 访问私有 API 服务器

  • 公有 DNS 服务器将集群的 API 服务器端点解析为 VPC 中的私有 IP 地址。过去,终端节点只能在 VPC 内部解析。

    如果您的终端节点未解析为现有集群的 VPC 内的私有 IP 地址,您可以:

    • 启用公有访问,然后重新禁用。您只需为集群执行一次该操作,终端节点就将从该时间点开始解析为私有 IP 地址。

    • 更新您的集群。

公有端点(IPv6 集群)中的 CIDR 块

您可以将 IPv6IPv4 CIDR 块添加到 IPv6 集群的公有端点,因为公有端点是双堆栈端点。这仅适用于您在 2024 年 10 月或之后创建的且将 ipFamily 设置为 IPv6 的新集群。您可以通过新的端点域名 api.aws 来识别这些集群。

公有端点(IPv4 集群)中的 CIDR 块

您可以将 IPv4 CIDR 块添加到 IPv4 集群的公有端点。您无法将 IPv6 CIDR 块添加到 IPv4 集群的公有端点。如果您尝试添加,EKS 将返回以下错误消息:The following CIDRs are invalid in publicAccessCidrs

公有端点中的 CIDR 块(2024 年 10 月之前创建的 IPv6 集群)

您可以将 IPv4 CIDR 块添加到您在 2024 年 10 月之前创建的旧 IPv6 集群的公有端点。您可以通过 eks.amazonaws.com 端点识别这些集群。您无法将 IPv6 CIDR 块添加到您在 2024 年 10 月之前创建的旧 IPv6 集群的公有端点。如果您尝试添加,EKS 将返回以下错误消息:The following CIDRs are invalid in publicAccessCidrs

访问私有 API 服务器

如果已禁用集群的 Kubernetes API 服务器端点的公有访问,则只能从 VPC 或连接的网络内访问 API 服务器。以下是访问 Kubernetes API 服务器终端节点的部分可行方法:

连接的网络

使用 AWS Transit Gateway 或其它连接选项将您的网络连接到 VPC,然后使用连接的网络中的计算机。必须确保 Amazon EKS 控制面板安全组包含允许来自所连接网络的入口流量通过端口 443 的规则。

Amazon EC2 堡垒主机

您可以在集群的 VPC 中将 Amazon EC2 实例启动到公共子网中,然后通过 SSH 登录到该实例来运行 kubectl 命令。有关更多信息,请参阅AWS上的 Linux 堡垒主机。必须确保 Amazon EKS 控制面板安全组包含允许来自堡垒主机的入口流量通过端口 443 的规则。有关更多信息,请参阅 查看集群的 Amazon EKS 安全组要求

在为堡垒主机配置 kubectl 时,请确保使用已映射到集群的 RBAC 配置的 AWS 凭证,或在移除端点公共访问之前添加您的堡垒机将用于 RBAC 配置的 IAM 主体。有关更多信息,请参阅向 IAM 用户和角色授予对 Kubernetes API 的访问权限未经授权或访问被拒绝 (kubectl)

AWS Cloud9 IDE

AWS Cloud9 是一种基于云的集成式开发环境(IDE),您只需要一个浏览器,即可编写、运行和调试代码。您可以在集群的 VPC 中创建 AWS Cloud9 IDE,然后使用 IDE 来与集群进行通信。有关更多信息,请参阅在 AWS Cloud9 中创建环境。必须确保 Amazon EKS 控制面板安全组包含允许来自 IDE 安全组的入口流量通过端口 443 的规则。有关更多信息,请参阅 查看集群的 Amazon EKS 安全组要求

在为 AWS Cloud9 IDE 配置 kubectl 时,请确保使用已映射到集群的 RBAC 配置的 AWS 凭证,或在移除端点公共访问之前添加您的 IDE 将用于 RBAC 配置的 IAM 主体。有关更多信息,请参阅向 IAM 用户和角色授予对 Kubernetes API 的访问权限未经授权或访问被拒绝 (kubectl)

📝 在 GitHub 上编辑此页面