配置对集群 API 服务器端点的网络访问权限 - Amazon EKS

帮助改进此页面

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

配置对集群 API 服务器端点的网络访问权限

您可以在以下部分中使用 AWS Management Console或 AWS CLI 修改集群 API 服务器端点访问。

配置端点访问 – AWS 控制台

  1. 打开 Amazon EKS console(Amazon EKS 控制台)

  2. 选择集群的名称可以显示集群信息。

  3. 选择联网选项卡,然后选择管理端点访问

  4. 对于私有访问,选择是启用还是禁用集群的 Kubernetes API 服务器端点的私有访问。如果启用私有访问,源自集群的 VPC 内的 Kubernetes API 请求将使用私有 VPC 端点。您必须启用私有访问以禁用公有访问。

  5. 对于公有访问,选择是启用还是禁用集群的 Kubernetes API 服务器端点的公有访问。如果禁用公有访问,集群的 Kubernetes API 服务器只能接收来自集群 VPC 内的请求。

  6. (可选)如果您已启用公有访问,则可以指定互联网中的哪些地址可以与公共端点通信。选择 Advanced Settings (高级设置)。输入 CIDR 块,例如 203.0.113.5/32。该块不能包含预留地址。您可以通过选择 Add Source (添加源) 来输入其他块。您可以指定的 CIDR 块存在最大数量限制。有关更多信息,请参阅 查看和管理 Amazon EKS 和 Fargate 服务配额。如果未指定任何块,则公有 API 服务器端点将接收来自双堆栈 IPv6 集群的所有 IPv4 (0.0.0.0/0) 和 IPv6 (::/0) IP 地址的请求。如果您使用 CIDR 块限制对公有端点的访问,建议您还启用私有端点访问,以便节点和 Fargate Pods(如果您使用它们)可以与集群进行通信。在未启用私有终端节点的情况下,您的公有访问终端节点 CIDR 源必须包含来自 VPC 的出口源。例如,如果您在私有子网中有一个节点,该节点通过 NAT 网关与 Internet 通信,则您需要将 NAT 网关的出站 IP 地址添加作为公有端点上的容许 CIDR 块的一部分。

  7. 选择 Update (更新) 完成操作。

配置端点访问 – AWS CLI

使用 AWS CLI 版本 1.27.160 或更高版本完成以下步骤。您可以使用 aws --version 检查您的当前版本。要安装或升级 AWS CLI,请参阅安装 AWS CLI

  1. 使用下面的 AWS CLI 命令更新集群 API 服务器端点访问。替换您的集群名称和所需的终端节点访问值。如果设置了 endpointPublicAccess=true,则可以(可选)输入单个 CIDR 块,或者输入 publicAccessCidrs 的用逗号分隔的 CIDR 块列表。块不能包含预留地址。如果您指定 CIDR 块,则公有 API 服务器终端节点将只接收来自列出的块的请求。您可以指定的 CIDR 块存在最大数量限制。有关更多信息,请参阅 查看和管理 Amazon EKS 和 Fargate 服务配额。如果您使用 CIDR 块限制对公有端点的访问,建议您还启用私有端点访问,以便节点和 Fargate Pods(如果您使用这些 Pod)可以与集群进行通信。在未启用私有终端节点的情况下,您的公有访问终端节点 CIDR 源必须包含来自 VPC 的出口源。例如,如果您在私有子网中有一个节点,该节点通过 NAT 网关与 Internet 通信,则您需要将 NAT 网关的出站 IP 地址添加作为公有端点上的容许 CIDR 块的一部分。如果未指定任何 CIDR 块,则公有 API 服务器端点将接收来自双堆栈 IPv6 集群的所有 (0.0.0.0/0) 和 IPv6 (::/0) 的 IP 地址请求。

    注意

    以下命令为 API 服务器终端节点启用来自单个 IP 地址的私有访问和公有访问。将 203.0.113.5/32 替换为要限制网络访问的单个 CIDR 块或用逗号分隔的 CIDR 块列表。

    aws eks update-cluster-config \ --region region-code \ --name my-cluster \ --resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="203.0.113.5/32",endpointPrivateAccess=true

    示例输出如下。

    { "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "InProgress", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\"203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] } }
  2. 使用以下命令通过上一命令返回的集群名称和更新 ID 监控您的终端节点访问更新的状态。当状态显示为 Successful 时,您的更新将完成。

    aws eks describe-update \ --region region-code \ --name my-cluster \ --update-id e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000

    示例输出如下。

    { "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "Successful", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\"203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] } }

📝 在 GitHub 上编辑此页面