本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Outposts 支援
警告
Outposts 不支援 EKS 受管節點群組。
將現有叢集擴展至 AWS Outpost
您可以將 AWS 區域中執行的現有 EKS 叢集擴展到 AWS Outposts,方法是設定 nodeGroup.outpostARN讓新節點群組在 Outposts 上建立節點群組,如下所示:
# extended-cluster.yaml --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: existing-cluster region: us-west-2 nodeGroups: # Nodegroup will be created in an AWS region. - name: ng # Nodegroup will be created on the specified Outpost. - name: outpost-ng privateNetworking: true outpostARN: "arn:aws:outposts:us-west-2:1234:outpost/op-1234"
eksctl create nodegroup -f extended-cluster.yaml
在此設定中,EKS 控制平面在 AWS 區域中執行,而具有 outpostARN設定的節點群組在指定的 Outpost 上執行。第一次在 Outposts 上建立節點群組時,eksctl 會透過在指定的 Outpost 上建立子網路來擴展 VPC。這些子網路用於建立已outpostARN設定的節點群組。
具有預先存在 VPC 的客戶需要在 Outposts 上建立子網路,並在 中傳遞它們nodeGroup.subnets,如 所示:
# extended-cluster-vpc.yaml --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: extended-cluster-vpc region: us-west-2 vpc: id: vpc-1234 subnets: private: outpost-subnet-1: id: subnet-1234 nodeGroups: # Nodegroup will be created in an AWS region. - name: ng # Nodegroup will be created on the specified Outpost. - name: outpost-ng privateNetworking: true # Subnet IDs for subnets created on Outpost. subnets: [subnet-5678] outpostARN: "arn:aws:outposts:us-west-2:1234:outpost/op-1234"
在 AWS Outposts 上建立本機叢集
注意
本機叢集僅支援 Outpost 機架。
注意
當控制平面位於 Outposts 上時,節點群組僅支援 Amazon Linux 2。Outpost 上的節點群組僅支援 EBS gp2 磁碟區類型。
eksctl 中的 AWS Outposts 支援可讓您使用整個 Kubernetes 叢集建立本機叢集,包括在 AWS Outposts 本機上執行的 EKS 控制平面和工作者節點。客戶可以使用在 AWS Outposts 本機執行的 EKS 控制平面和工作者節點建立本機叢集,也可以透過在 Outposts 上建立工作者節點,將 AWS 區域中執行的現有 EKS 叢集擴展至 AWS Outposts。
若要在 AWS Outposts 上建立 EKS 控制平面和節點群組,請將 outpost.controlPlaneOutpostARN設定為 Outpost ARN,如下所示:
# outpost.yaml --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: outpost region: us-west-2 outpost: # Required. controlPlaneOutpostARN: "arn:aws:outposts:us-west-2:1234:outpost/op-1234" # Optional, defaults to the smallest available instance type on the Outpost. controlPlaneInstanceType: m5d.large
eksctl create cluster -f outpost.yaml
這會指示 eksctl 在指定的 Outpost 上建立 EKS 控制平面和子網路。由於 Outposts 機架存在於單一可用區域中,eksctl 只會建立一個公有和私有子網路。eksctl 不會將建立的 VPC 與本機閘道建立關聯,因此 eksctl 將無法連線至 API 伺服器,而且將無法建立節點群組。因此,如果 在叢集建立期間ClusterConfig包含任何節點群組,則必須使用 執行 命令--without-nodegroup,如 所示:
eksctl create cluster -f outpost.yaml --without-nodegroup
建立叢集後,客戶有責任將 eksctl 建立的 VPC 與本機閘道建立關聯,以啟用與 API 伺服器的連線。在此步驟之後,可以使用 建立節點群組eksctl create nodegroup。
您可以選擇性地為 中的控制平面節點outpost.controlPlaneInstanceType或 中的節點群組指定執行個體類型nodeGroup.instanceType,但執行個體類型必須存在於 Outpost 上,否則 eksctl 會傳回錯誤。根據預設,eksctl 會嘗試在 Outpost 上為控制平面節點和節點群組選擇最小的可用執行個體類型。
當控制平面在 Outpost 上時,節點群組會在該 Outpost 上建立。您可以選擇性地指定 中節點群組的 Outpost ARN,nodeGroup.outpostARN但必須符合控制平面的 Outpost ARN。
# outpost-fully-private.yaml --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: outpost-fully-private region: us-west-2 privateCluster: enabled: true outpost: # Required. controlPlaneOutpostARN: "arn:aws:outposts:us-west-2:1234:outpost/op-1234" # Optional, defaults to the smallest available instance type on the Outpost. controlPlaneInstanceType: m5d.large
# outpost.yaml --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: outpost region: us-west-2 outpost: # Required. controlPlaneOutpostARN: "arn:aws:outposts:us-west-2:1234:outpost/op-1234" # Optional, defaults to the smallest available instance type on the Outpost. controlPlaneInstanceType: m5d.large controlPlanePlacement: groupName: placement-group-name
現有 VPC
具有現有 VPC 的客戶可以透過在 中指定子網路組態,在 AWS Outposts 上建立本機叢集vpc.subnets,如 所示:
# outpost-existing-vpc.yaml --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: outpost region: us-west-2 vpc: id: vpc-1234 subnets: private: outpost-subnet-1: id: subnet-1234 nodeGroups: - name: outpost-ng privateNetworking: true outpost: # Required. controlPlaneOutpostARN: "arn:aws:outposts:us-west-2:1234:outpost/op-1234" # Optional, defaults to the smallest available instance type on the Outpost. controlPlaneInstanceType: m5d.large
eksctl create cluster -f outpost-existing-vpc.yaml
子網路必須存在於 中指定的 Outpost 上,outpost.controlPlaneOutpostARN否則 eksctl 會傳回錯誤。如果您可以存取子網路的本機閘道,或可以連線至 VPC 資源,也可以在叢集建立期間指定節點群組。