本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
EKS 混合節點
簡介
Amazon EKS 推出混合節點,這項新功能可讓您在客戶管理的基礎設施上執行內部部署和邊緣應用程式,其具有您在 AWS 中使用的相同 Amazon EKS 叢集、功能和工具。Amazon EKS 混合節點為內部部署環境提供 AWS 受管 Kubernetes 體驗,讓客戶能夠簡化和標準化您在內部部署、邊緣和雲端環境中執行應用程式的方式。在 EKS 混合節點中閱讀更多資訊。
為了促進對此功能的支援,eksctl 推出了名為 的新最上層欄位remoteNetworkConfig。任何與混合節點相關的組態都應透過此欄位設定,做為組態檔案的一部分;沒有 CLI 標記對應項目。此外,在啟動時,任何遠端網路組態只能在叢集建立期間設定,之後無法更新。這表示您將無法更新現有叢集以使用混合節點。
組態檔案的 remoteNetworkConfig區段可讓您在將遠端節點加入 EKS 叢集時設定兩個核心區域:聯網和登入資料。
聯網
EKS 混合節點可彈性使用您偏好的方法來將內部部署網路連線至 VPC (VPC)。有多種文件記錄的選項可供使用,包括 AWS Site-to-Site VPN 和 AWS Direct Connect,您可以選擇最適合您的使用案例的方法。在您可以選擇的大多數方法中,VPC 會連接到虛擬私有閘道 (VGW) 或傳輸閘道 (TGW)。如果您依賴 eksctl 為您建立 VPC,eksctl 也會在您的 VPC 範圍內設定任何與聯網相關的先決條件,以促進 EKS 控制平面與遠端節點之間的通訊,即
-
輸入/輸出 SG 規則
-
私有子網路路由表中的路由
-
連接至指定 TGW 或 VGW 的 VPC 閘道
範例組態檔案:
remoteNetworkConfig: vpcGatewayID: tgw-xxxx # either VGW or TGW to be attached to your VPC remoteNodeNetworks: # eksctl will create, behind the scenes, SG rules, routes, and a VPC gateway attachment, # to facilitate communication between remote network(s) and EKS control plane, via the attached gateway - cidrs: ["10.80.146.0/24"] remotePodNetworks: - cidrs: ["10.86.30.0/23"]
如果您選擇的連線方法不涉及使用 TGW 或 VGW,則不得依賴 eksctl 為您建立 VPC,而是提供預先存在的 VPC。請注意,如果您使用的是預先存在的 VPC,eksctl 不會對其進行任何修改,並確保所有聯網要求都存在,由您負責。
注意
eksctl 不會在您的 AWS VPC 外部設定任何聯網基礎設施 (即從 VGW/TGW 到遠端網路的任何基礎設施)
憑證
EKS 混合節點使用 AWS IAM Authenticator 和由 AWS SSM 或 AWS IAM Roles Anywhere 佈建的臨時 IAM 登入資料來驗證 EKS 叢集。與自我管理節點群組類似,如果未另外提供,eksctl 會為您建立混合節點 IAM 角色,以供遠端節點擔任。此外,使用 IAM Roles Anywhere 做為登入資料提供者時,eksctl 會根據指定的憑證授權機構套件 (iam.caBundleCert) 設定設定檔和信任錨點,例如
remoteNetworkConfig: iam: # the provider for temporary IAM credentials. Default is SSM. provider: IRA # the certificate authority bundle that serves as the root of trust, # used to validate the X.509 certificates provided by your nodes. # can only be set when provider is IAMRolesAnywhere. caBundleCert: xxxx
在將遠端節點加入叢集、NodeConfig設定 和建立啟用 (如果使用 SSM) 的過程中nodeadm,稍後需要 eksctl 建立的混合節點角色 ARN。若要擷取它,請使用:
aws cloudformation describe-stacks \ --stack-name eksctl-<CLUSTER_NAME>-cluster \ --query 'Stacks[].Outputs[?OutputKey==`RemoteNodesRoleARN`].[OutputValue]' \ --output text
同樣地,如果使用 IAM Roles Anywhere,您可以擷取信任錨點的 ARN 和 eksctl 建立的任何設定檔,分別以 RemoteNodesRoleARNRemoteNodesTrustAnchorARN或 取代來修改先前的命令RemoteNodesAnywhereProfileARN。
如果您有預先存在的 IAM Roles Anywhere 組態,或正在使用 SSM,您可以透過 為混合節點提供 IAM 角色remoteNetworkConfig.iam.roleARN。請記住,在此案例中,eksctl 不會為您建立信任錨點和任何設定檔,例如
remoteNetworkConfig: iam: roleARN: arn:aws:iam::000011112222:role/HybridNodesRole
若要將角色映射至 Kubernetes 身分,並授權遠端節點加入 EKS 叢集,eksctl 會使用混合節點 IAM 角色建立存取項目做為主體 ARN,類型為 HYBRID_LINUX。即
eksctl get accessentry --cluster my-cluster --principal-arn arn:aws:iam::000011112222:role/eksctl-my-cluster-clust-HybridNodesSSMRole-XiIAg0d29PkO --output json [ { "principalARN": "arn:aws:iam::000011112222:role/eksctl-my-cluster-clust-HybridNodesSSMRole-XiIAg0d29PkO", "kubernetesGroups": [ "system:nodes" ] } ]
附加元件支援
容器聯網界面 (CNI):AWS VPC CNI 無法與混合節點搭配使用。Cilium 和 Calico 的核心功能支援與混合節點搭配使用。您可以使用您選擇的工具來管理 CNI,例如 Helm。如需詳細資訊,請參閱設定混合節點的 CNI。
注意
如果您在叢集中為自我管理或 EKS 受管節點群組安裝 VPC CNI,則必須使用 v1.19.0-eksbuild.1或更新版本,因為這包括對附加元件協助程式集的更新,以排除在混合節點上安裝 VPC CNI。