集群访问权限 - Eksctl 用户指南

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

集群访问权限

管理对 Kubernetes API 服务器端点的访问权限

默认情况下,EKS 集群公开公开 Kubernetes API 服务器,但不会直接从 VPC 子网内部公开(public=true,private=false)。从 VPC 内部发往 API 服务器的流量必须先退出 VPC 网络(但不能退出 Amazon 的网络),然后重新进入才能到达 API 服务器。

使用集群配置文件创建集群时,可以将集群的 Kubernetes API 服务器端点访问权限配置为公有和私有访问。以下示例:

vpc: clusterEndpoints: publicAccess: <true|false> privateAccess: <true|false>

在配置 Kubernetes API 端点访问权限时,还有一些额外的注意事项:

  1. EKS 不允许未启用私有公有访问权限的集群。

  2. EKS 确实允许创建仅允许启用私有访问的配置,但是 eksctl 在创建集群期间不支持该配置,因为它会阻止 eksctl 将工作节点加入集群。

  3. 将集群更新为仅允许私有 Kubernetes API 终端节点访问权限意味着,默认情况下,Kubernetes 命令(例如kubectl)以及eksctl delete clustereksctl utils write-kubeconfig、以及可能的命令eksctl utils update-kube-proxy必须在集群 VPC 内运行。

    • 这需要对各种 AWS 资源进行一些更改。有关更多信息,请参阅集群 API 服务器终端节点

    • 您可以提供将额外vpc.extraCIDRs的 CIDR 范围附加到的 CIDR 范围 ControlPlaneSecurityGroup,从而允许 VPC 之外的子网到达 kubernetes API 终端节点。同样,您也可以vpc.extraIPv6CIDRs提供附加的 IPv6 CIDR 范围。

以下是如何使用子命令配置 Kubernetes API 端点访问权限的示例:utils

eksctl utils update-cluster-vpc-config --cluster=<clustername> --private-access=true --public-access=false

要使用ClusterConfig文件更新设置,请使用:

eksctl utils update-cluster-vpc-config -f config.yaml --approve

请注意,如果您不传递标志,它将保留当前值。对建议的更改感到满意后,请添加approve标志以对正在运行的集群进行更改。

限制对 EKS Kubernetes 公共 API 端点的访问

默认创建 EKS 集群会公开公开 Kubernetes API 服务器。

此功能仅适用于公共端点。API 服务器终端节点访问配置选项不会更改,您仍然可以选择禁用公共终端节点,这样您的集群就无法通过 Internet 进行访问。(来源:conta https://github.com/aws/ iners-roadmap/issues/108 #issuecomment -552766489)

要在创建集群 CIDRs 时将公有 API 终端节点的访问权限限制为一组,请设置以下publicAccessCIDRs字段:

vpc: publicAccessCIDRs: ["1.1.1.1/32", "2.2.2.0/24"]

要更新对现有集群的限制,请使用:

eksctl utils update-cluster-vpc-config --cluster=<cluster> 1.1.1.1/32,2.2.2.0/24

要使用ClusterConfig文件更新限制,请设置新的 CIDRs 文件vpc.publicAccessCIDRs并运行:

eksctl utils update-cluster-vpc-config -f config.yaml
重要

如果设置publicAccessCIDRs和创建节点组,则privateAccess应将其设置为,true或者将节点添加到 IPs 列表中。publicAccessCIDRs

如果节点由于访问受限而无法访问集群 API 终端节点,则集群创建将失败,context deadline exceeded原因是节点无法访问公有终端节点且无法加入集群。

要在单个命令中更新集群的 API 服务器终端节点访问权限和公共访问权限 CIDRs ,请运行:

eksctl utils update-cluster-vpc-config --cluster=<cluster> --public-access=true --private-access=true --public-access-cidrs=1.1.1.1/32,2.2.2.0/24

要使用配置文件更新设置,请执行以下操作:

vpc: clusterEndpoints: publicAccess: <true|false> privateAccess: <true|false> publicAccessCIDRs: ["1.1.1.1/32"]
eksctl utils update-cluster-vpc-config --cluster=<cluster> -f config.yaml