AWS::EKS::Nodegroup - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::EKS::Nodegroup

为 Amazon EKS 集群创建托管工作线程节点组。您只能为集群创建等于集群的当前 Kubernetes 版本的节点组。除非您使用启动模板部署自定义 AMI,否则,将使用集群的相应 Kubernetes 次要版本的最新 AMI 发行版创建所有节点组。有关使用启动模板的详细信息,请参阅启动模板支持

Amazon EKS 托管节点组是 AWS 为 Amazon EKS 集群管理的 Amazon EC2 Auto Scaling 组和关联的 Amazon EC2 实例。每个节点组使用 Amazon EKS 优化的 Amazon Linux 2 AMI 的一个版本。有关更多信息,请参阅 Amazon EKS 用户指南 中的托管节点组

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::EKS::Nodegroup", "Properties" : { "AmiType" : String, "ClusterName" : String, "DiskSize" : Double, "ForceUpdateEnabled" : Boolean, "InstanceTypes" : [ String, ... ], "Labels" : Json, "LaunchTemplate" : LaunchTemplateSpecification, "NodegroupName" : String, "NodeRole" : String, "ReleaseVersion" : String, "RemoteAccess" : RemoteAccess, "ScalingConfig" : ScalingConfig, "Subnets" : [ String, ... ], "Tags" : Json, "Version" : String } }

YAML

Type: AWS::EKS::Nodegroup Properties: AmiType: String ClusterName: String DiskSize: Double ForceUpdateEnabled: Boolean InstanceTypes: - String Labels: Json LaunchTemplate: LaunchTemplateSpecification NodegroupName: String NodeRole: String ReleaseVersion: String RemoteAccess: RemoteAccess ScalingConfig: ScalingConfig Subnets: - String Tags: Json Version: String

属性

AmiType

节点组的 AMI 类型。GPU 实例类型应使用 AL2_x86_64_GPU AMI 类型。非 GPU 实例应使用 AL2_x86_64 AMI 类型。ARM 实例应使用 AL2_ARM_64 AMI 类型。所有类型都使用经 Amazon EKS 优化的 Amazon Linux 2 AMI。如果指定 launchTemplate,并且启动模板使用自定义 AMI,则不要指定 amiType,否则节点组部署将失败。有关对 Amazon EKS 使用启动模板的更多信息,请参阅《Amazon EKS 用户指南》中的启动模板支持

必需:否

类型:字符串

允许的值AL2_ARM_64 | AL2_x86_64 | AL2_x86_64_GPU

Update requires: Replacement

ClusterName

要在其中创建节点组的集群的名称。

必需:是

类型:字符串

Update requires: Replacement

DiskSize

节点组实例的根设备磁盘大小(以 GiB 为单位)。默认磁盘大小为 20 GiB。如果指定 launchTemplate,则不要指定 diskSize,否则节点组部署将失败。有关对 Amazon EKS 使用启动模板的更多信息,请参阅《Amazon EKS 用户指南》中的启动模板支持

必需:否

类型:双精度

Update requires: Replacement

ForceUpdateEnabled

如果由于 pod 中断预算问题而无法耗尽现有节点组的 pod,则强制执行更新。如果由于无法耗尽 pod 而导致更新失败,您可以在更新无法终止旧节点后强制执行更新,而无论在节点上是否运行任何 pod。

必需:否

类型:布尔值

Update requires: No interruption

InstanceTypes

要用于节点组的实例类型。您可以为节点组指定单个实例类型。instanceTypes 的默认值为 t3.medium。如果选择 GPU 实例类型,请确保使用 amiType 参数指定 AL2_x86_64_GPU。如果指定 launchTemplate,则不要指定 instanceTypes,否则节点组部署将失败。有关对 Amazon EKS 使用启动模板的更多信息,请参阅《Amazon EKS 用户指南》中的启动模板支持

必需:否

类型:字符串列表

Update requires: Replacement

Labels

要在创建节点组中的节点时为其应用的 Kubernetes 标签。

必需:否

类型:Json

Update requires: No interruption

LaunchTemplate

表示节点组的启动模板规范的对象。如果指定,则不要指定 instanceTypesdiskSizeremoteAccess,并确保启动模板满足 launchTemplateSpecification 中的要求。

必需:否

类型LaunchTemplateSpecification

Update requires: No interruption

NodegroupName

要为节点组提供的唯一名称。

必需:否

类型:字符串

Update requires: Replacement

NodeRole

与节点组关联的 IAM 角色的 Amazon 资源名称 (ARN)。Amazon EKS 工作线程节点 kubelet 守护程序代表您调用 AWS API。工作线程节点通过 IAM 实例配置文件和关联的策略获得这些 API 调用的权限。您必须先为工作线程节点创建 IAM 角色以在启动它们时使用,然后才能启动这些工作线程节点并在集群中注册它们。有关更多信息,请参阅 Amazon EKS 用户指南 中的 Amazon EKS 工作线程节点 IAM 角色。如果指定 launchTemplate,则不要在启动模板中指定 IamInstanceProfile,否则节点组部署将失败。有关对 Amazon EKS 使用启动模板的更多信息,请参阅《Amazon EKS 用户指南》中的启动模板支持

必需:是

类型:字符串

Update requires: Replacement

ReleaseVersion

要与节点组一起使用的 Amazon EKS 优化的 AMI 的 AMI 版本(例如 1.14.7-YYYYMMDD)。默认情况下,将使用节点组的当前 Kubernetes 版本的最新可用 AMI 版本。有关更多信息,请参阅 Amazon EKS 用户指南 中的 Amazon EKS 优化的 Linux AMI 版本

注意

如果更改该值,将触发节点组更新(如果有)。不过,只能将最新的可用 AMI 发行版本作为有效的输入。您无法回滚到以前的 AMI 发行版本。

必需:否

类型:字符串

Update requires: No interruption

RemoteAccess

要与节点组一起使用的远程访问 (SSH) 配置。如果指定 launchTemplate,则不要指定 remoteAccess,否则节点组部署将失败。有关对 Amazon EKS 使用启动模板的更多信息,请参阅《Amazon EKS 用户指南》中的启动模板支持

必需:否

类型RemoteAccess

Update requires: Replacement

ScalingConfig

为节点组创建的 Auto Scaling 组的扩展配置详细信息。

必需:否

类型ScalingConfig

Update requires: No interruption

Subnets

要用于为节点组创建的 Auto Scaling 组的子网。这些子网必须具有值为 sharedkubernetes.io/cluster/CLUSTER_NAME 标签键,其中 CLUSTER_NAME 替换为集群的名称。如果指定 launchTemplate,则不要在启动模板中指定 SubnetId,否则节点组部署将失败。有关对 Amazon EKS 使用启动模板的更多信息,请参阅《Amazon EKS 用户指南》中的启动模板支持

必需:是

类型:字符串列表

Update requires: Replacement

Tags

要应用于节点组以帮助进行分类和组织的元数据。每个标签都包含您定义的一个键和一个可选值。节点组标签不会传播到与节点组关联的任何其他资源,例如 Amazon EC2 实例或子网。

必需:否

类型:Json

Update requires: No interruption

Version

要用于托管节点的 Kubernetes 版本。默认情况下,将使用集群的 Kubernetes 版本,这是唯一接受的指定值。如果指定 launchTemplate,并且启动模板使用自定义 AMI,则不要指定 version,否则节点组部署将失败。有关对 Amazon EKS 使用启动模板的更多信息,请参阅《Amazon EKS 用户指南》中的启动模板支持

必需:否

类型:字符串

Update requires: No interruption

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回 资源名称。例如:

{ "Ref": "myNodegroup" }

对于 Amazon EKS 节点组 myNodegroup,Ref 返回该节点组的物理资源 ID。例如:<cluster_name>/<nodegroup_name>

For more information about using the Ref function, see Ref.

Fn::GetAtt

Fn::GetAtt 内部函数返回此类型的一个指定属性的值。以下为可用属性和示例返回值。

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

Arn

与托管节点组关联的 Amazon 资源名称 (ARN)。

ClusterName

托管节点组所在的集群的名称。

NodegroupName

与 Amazon EKS 托管节点组关联的名称。

示例

创建托管节点组

以下示例在 prod 集群中创建一个称为 standard 的 Amazon EKS 托管节点组。

JSON

{ "Resources": { "EKSNodegroup": { "Type": "AWS::EKS::Nodegroup", "Properties": { "ClusterName": "prod", "NodeRole": "arn:aws:iam::012345678910:role/eksInstanceRole", "ScalingConfig": { "MinSize": 3, "DesiredSize": 5, "MaxSize": 7 }, "Labels": { "Key1": "Value1", "Key2": "Value2" }, "Subnets": [ "subnet-6782e71e", "subnet-e7e761ac" ] } } } }

YAML

Resources: EKSNodegroup: Type: 'AWS::EKS::Nodegroup' Properties: ClusterName: prod NodeRole: 'arn:aws:iam::012345678910:role/eksInstanceRole' ScalingConfig: MinSize: 3 DesiredSize: 5 MaxSize: 7 Labels: Key1: Value1 Key2: Value2 Subnets: - subnet-6782e71e - subnet-e7e761ac

另请参阅