AWS Outposts Support - Eksctl 用户指南

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

AWS Outposts Support

警告

Outposts 不支持 EKS 托管节点组。

将现有集群扩展到 AWS Outposts

您可以将在 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。Outposts 上的节点组仅支持 EBS gp2 卷类型。

eksctl 中的 AWS Outpost s 支持允许你创建本地集群,整个 Kubernetes 集群,包括 EKS 控制平面和工作节点,在 AWS Outposts 上本地运行。客户可以在 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或中的节点组指定实例类型,但实例类型必须存在于 Outpost 上nodeGroup.instanceType,否则 eksctl 将返回错误。默认情况下,eksctl 会尝试在 Outpost 上为控制平面节点和节点组选择最小的可用实例类型。

当控制平面在 Outposts 上时,将在该 Outpost 上创建节点组。您可以选择为nodeGroup.outpostARN中的节点组指定 Outpost ARN,但它必须与控制平面的 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.controlPlaneOutpostARN否则 eksctl 将返回错误。如果您有权访问子网的本地网关或连接到 VPC 资源,则还可以在创建集群时指定节点组。

本地集群不支持这些功能

进一步信息