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

AWS::EKS::Nodegroup

为 Amazon EKS 集群创建托管工作线程节点组。您只能为集群创建等于集群的当前 Kubernetes 版本的节点组。创建的所有节点组具有集群的相应 Kubernetes 次要版本的最新 AMI 发行版。

Amazon EKS 托管节点组是 AWS 为 Amazon EKS 集群管理的 Amazon EC2 Auto Scaling 组和关联的 Amazon EC2 实例。每个节点组使用 Amazon EKS 优化的 Amazon Linux 2 AMI 的版本。

您只能为支持托管节点的 Amazon EKS 集群创建托管节点组。有关更多信息,请参阅 Amazon EKS 用户指南 中的托管节点组

语法

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

JSON

{ "Type" : "AWS::EKS::Nodegroup", "Properties" : { "AmiType" : String, "ClusterName" : String, "DiskSize" : Double, "ForceUpdateEnabled" : Boolean, "InstanceTypes" : [ String, ... ], "Labels" : Json, "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 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 支持的 Amazon EKS 优化的 Linux AMI。非 GPU 实例应使用 AL2_x86_64 AMI 类型,该类型使用 Amazon EKS 优化的 Linux AMI。

必需:否

类型:字符串

允许的值AL2_x86_64 | AL2_x86_64_GPU

Update requires: Replacement

ClusterName

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

必需:是

类型:字符串

Update requires: Replacement

DiskSize

节点组实例的根设备磁盘大小(以 GiB 为单位)。默认磁盘大小为 20 GiB。

必需:否

类型:双精度

Update requires: Replacement

ForceUpdateEnabled

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

必需:否

类型:布尔值

Update requires: No interruption

InstanceTypes

要用于节点组的实例类型。目前,您可以为节点组指定单个实例类型。此参数的默认值为 t3.medium.如果您选择 GPU 实例类型,请确保使用 amiType 参数指定 AL2_x86_64_GPU

必需:否

类型:字符串列表

Update requires: Replacement

Labels

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

必需:否

类型:Json

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 角色

必需:是

类型:字符串

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) 配置。

必需:否

类型RemoteAccess

Update requires: Replacement

ScalingConfig

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

必需:否

类型ScalingConfig

Update requires: No interruption

Subnets

要用于为节点组创建的 Auto Scaling 组的子网。这些子网必须具有值为 sharedkubernetes.io/cluster/CLUSTER_NAME 标签键,其中 CLUSTER_NAME 替换为集群的名称。

必需:是

类型:字符串列表

Update requires: Replacement

Tags

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

必需:否

类型:Json

Update requires: No interruption

Version

要用于托管节点的 Kubernetes 版本。默认情况下,将使用集群的 Kubernetes 版本,这是唯一接受的指定值。

必需:否

类型:字符串

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

另请参阅