本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
叢集存取
管理對 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 端點存取時,有一些額外的注意事項:
-
EKS 不允許叢集未啟用私有或公有存取。
-
EKS 確實允許建立僅允許啟用私有存取的組態,但 eksctl 在叢集建立期間不支援它,因為它可防止 eksctl 將工作者節點加入叢集。
-
將叢集更新為只有私有的 Kubernetes API 端點存取,表示依預設,Kubernetes 命令 (例如
kubectl) 以及eksctl utils write-kubeconfig、eksctl delete cluster和 可能需要在叢集 VPC 中eksctl utils update-kube-proxy執行命令。-
這需要對各種 AWS 資源進行一些變更。如需詳細資訊,請參閱叢集 API 伺服器端點。
-
您可以提供
vpc.extraCIDRs來將其他 CIDR 範圍附加至 ControlPlaneSecurityGroup,允許 VPC 外部的子網路到達 kubernetes API 端點。同樣地,您也可以提供vpc.extraIPv6CIDRs來附加 IPv6 CIDR 範圍。
-
以下是如何使用 utils子命令設定 Kubernetes API 端點存取的範例:
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 Public API 端點的存取
EKS 叢集的預設建立會公開 Kubernetes API 伺服器。
此功能僅適用於公有端點。API 伺服器端點存取組態選項不會變更,而且您仍然可以選擇停用公有端點,讓叢集無法從網際網路存取。(來源:https://https://github.com/aws/containers-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 檔案更新限制,請在 中設定新的 CIDRsvpc.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