帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
控制对集群 API 服务器端点的网络访问权限
本主题可帮助您为 Amazon EKS 集群的 Kubernetes API 服务器端点启用私有访问,并限制或完全禁用通过 Internet 进行的公有访问。
在创建新集群时,Amazon EKS 将为您用于与集群进行通信的托管 Kubernetes API 服务器(使用 Kubernetes 管理工具,如 kubectl
)创建端点。预设情况下,此 API 服务器端点对于 Internet 是公有的,对 API 服务器的访问将使用 AWS Identity and Access Management(IAM)与本机 Kubernetes 基于角色的访问控制
您可以启用对 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 必须将 enableDnsHostnames
和 enableDnsSupport
设置为 true
,而且为 VPC 设置的 DHCP 选项必须在其域名服务器列表中包含 AmazonProvidedDNS
。有关更多信息,请参阅 Amazon VPC 用户指南中的更新 VPC 的 DNS 支持。
您可以在创建新集群时定义 API 服务器终端节点的访问要求,并且可以随时更新集群的 API 服务器终端节点访问。
修改集群终端节点访问
使用本节中的过程来修改现有集群的终端节点访问。下表显示了受支持的 API 服务器终端节点访问组合及其关联的行为。
终端节点公有访问 | 终端节点私有访问 | 行为 |
---|---|---|
已启用 | 已禁用 |
|
已启用 | 已启用 |
|
已禁用 | 已启用 |
|
您可以使用 AWS Management Console或 AWS CLI 修改集群 API 服务器终端节点访问。
访问私有 API 服务器
如果您已禁用集群的 Kubernetes API 服务器端点的公有访问,则只能从 VPC 或连接的网络内访问 API 服务器。以下是访问 Kubernetes API 服务器端点的部分可行方法:
- 连接的网络
-
使用 AWSTransit 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 APIs 的访问权限 和未经授权或访问被拒绝 (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 APIs 的访问权限 和未经授权或访问被拒绝 (kubectl)。