

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

# AWS.Compute.EKSSelfManagedNode
<a name="node-eks-self-managed"></a>

AWS TNB 支持 Amazon EKS 自我管理节点，以自动为亚马逊 EKS Kubernetes 集群配置节点（亚马逊 EC2 实例）和进行生命周期管理。要创建 Amazon EKS 节点组，请执行以下操作：
+ 通过提供 AMI 的 ID，为您的集群工作节点选择亚马逊系统映像 (AMI)。
+ 提供用于 SSH 访问的 Amazon EC2 密钥对。
+ 确保您的节点组与 Amazon EKS 集群相关联。
+ 提供实例类型以及所需大小、最小和最大大小。
+ 为工作节点提供子网。
+ 或者，将安全组、节点标签和置放群组附加到您的节点组。

## 语法
<a name="node-eks-self-managed-node-syntax"></a>

```
tosca.nodes.AWS.Compute.EKSSelfManagedNode:
  capabilities:
    compute:
      properties:
        ami\_id: String
        instance\_type: String
        key\_pair: String
        root\_volume\_encryption: Boolean
        root\_volume\_encryption\_key\_arn: String    
        root\_volume\_size: Integer
    scaling:
      properties:
        desired\_size: Integer
        min\_size: Integer
        max\_size: Integer  
  properties:
    node\_role: String    
    tags: List          
  requirements:
    cluster: String
    subnets: List
    network\_interfaces: List
    security\_groups: List
    placement\_group: String
    user\_data: String
    labels: List
```

## 功能
<a name="node-eks-self-managed-node-capabilities"></a><a name="node_eks_self_managed_node_compute"></a>`计算`

定义 Amazon EKS 自管理节点计算参数的属性，例如 Amazon EC2 实例类型和 Amazon EC2 实例 AMI。

 `ami_id`    
用于启动实例的 AMI ID。 AWS TNB 支持利用 imdsv2 的实例。有关更多信息，请参阅 [IMDS 版本](imds-version.md)。  
您可以更新的 AMI ID `EKSSelfManagedNode`。AMI 的 Amazon EKS 版本必须与亚马逊 EKS 集群版本相同或最多低两个版本。例如，如果亚马逊 EKS 集群版本为 1.31，则亚马逊 EKS AMI 版本必须为 1.31、1.30 或 1.29。
是否必需：是  
类型：字符串

 `instance_type`    
实例大小。  
是否必需：是  
类型：字符串

 `key_pair`    
启用 SSH 访问的 Amazon EC2 密钥对。  
是否必需：是  
类型：字符串

 `root_volume_encryption`    
为亚马逊 EBS 根卷启用亚马逊 EBS 加密。如果未提供此属性，则 AWS TNB 会默认加密 Amazon EBS 根卷。  
必需：否  
默认：True  
类型：布尔值

 `root_volume_encryption_key_arn`    
密钥的 ARN。 AWS KMS AWS TNB 支持常规密钥 ARN、多区域密钥 ARN 和别名 ARN。  
必需：否  
类型：字符串  
+ 如果`root_volume_encryption`为假，则不包括`root_volume_encryption_key_arn`。
+ AWS TNB 支持 Amazon EBS-backed AMI 的根卷加密。
+ 如果 AMI 的根卷已加密，则必须包括`root_volume_encryption_key_arn`以便 AWS TNB 重新加密根卷。
+  如果 AMI 的根卷未加密， AWS TNB `root_volume_encryption_key_arn` 将使用加密根卷。

  如果不包括`root_volume_encryption_key_arn`， AWS TNB AWS Managed Services 将使用加密根卷。
+ AWS TNB 不会解密加密的 AMI。

 `root_volume_size`    
Amazon Elastic Block Store 根卷的大小 GiBs。  
必需：否  
默认值：20  
类型：整数  
可能的值：1 到 16,384<a name="node_eks_self_managed_node_scaling"></a>`扩展`

定义 Amazon EKS 自管理节点扩缩参数的属性，例如节点组中所需的 Amazon EC2 实例数量以及 Amazon EC2 实例的最少和最多数量。

 `desired_size`    
此中的实例数量 NodeGroup。  
是否必需：是  
类型：整数

 `min_size`    
此中的最小实例数 NodeGroup。  
是否必需：是  
类型：整数

 `max_size`    
此中的最大实例数 NodeGroup。  
是否必需：是  
类型：整数

## Properties
<a name="node-eks-self-managed-node-properties"></a>

 `node_role`    
附加到 Amazon EC2 实例的 IAM 角色的 ARN。  
是否必需：是  
类型：字符串

 `tags`    
要附加到资源的标签。标签将传播到资源创建的实例。  
必需：否  
类型：列表

## 要求
<a name="node-eks-self-managed-node-requirements"></a>

 `cluster`    
一个[AWS。 Compute.EKS](node-eks.md)节点。  
是否必需：是  
类型：字符串

 `subnets`    
一个[AWS。 Networking.Subnet](node-subnet.md)节点。  
是否必需：是  
类型：列表

 `network_interfaces`    
一个[AWS。 Networking.ENI](node-eni.md)节点。确保将网络接口和子网设置为相同的可用区，否则实例化将失败。  
设置后`network_interfaces`，如果您在节点中包含该属性，则 AWS TNB 将从该`multus_role`属性获取与 ENI 相关的权限。`multus` [AWS.Compute.EKS](https://docs.aws.amazon.com/tnb/latest/ug/node-eks.html)否则， AWS TNB 将从 [node\_role](#node_eks_self_managed_node_role) 属性中获取与 ENI 相关的权限。  
必需：否  
类型：列表

 `security_groups`    
一个[AWS。 Networking.SecurityGroup](node-networking-security-group.md)节点。  
必需：否  
类型：列表

 `placement_group`    
一个 [tosca.nodes。AWS。 Compute.PlacementGroup](node-compute-placement-group.md)节点。  
必需：否  
类型：字符串

 `user_data`    
一个 [tosca.nodes。AWS。 Compute.UserData](node-compute-user-data.md)节点引用。用户数据脚本传递到由自行管理的节点组启动的 Amazon EC2 实例。将执行自定义用户数据所需的权限添加到传递给节点组的 node\_role。  
必需：否  
类型：字符串

 `labels`    
节点标签列表。节点标签必须有名称和值。使用以下标准创建标签：  
+ 名称和值必须用分隔`=`。
+ 名称和值的长度最多可为 63 个字符。
+ 标签可以包含字母 (A-Z、a-z、)、数字 (0-9) 和以下字符：`[-, _, ., *, ?]`
+ 名称和值必须以字母数字`?`、或`*`字符开头和结尾。
例如，`myLabelName1=*NodeLabelValue1`  
必需：否  
类型：列表

## 示例
<a name="node-eks-self-managed-node-example"></a>

```
SampleEKSSelfManagedNode:
  type: tosca.nodes.AWS.Compute.EKSSelfManagedNode
  capabilities:
    compute:
      properties:
        ami_id: "ami-123123EXAMPLE"
        instance_type: "c5.large"
        key_pair: "SampleKeyPair"
        root_volume_encryption: true
        root_volume_encryption_key_arn: "arn:aws:kms:{{us-west-2:111122223333}}:key/{{1234abcd-12ab-34cd-56ef-1234567890ab}}"
        root_volume_size: {{1500}}
    scaling:
      properties:
        desired_size: 1
        min_size: 1
        max_size: 1
  properties:
    node_role: "arn:aws:iam::${AWS::TNB::AccountId}:role/{{SampleNodeRole}}" 
    tags:
      - "Name=SampleVPC"
      - "Environment=Testing"          
  requirements:
    cluster: SampleEKSCluster
    subnets:
      - SampleSubnet
    network_interfaces:
      - SampleNetworkInterface01
      - SampleNetworkInterface02
    security_groups:
      - SampleSecurityGroup01
      - SampleSecurityGroup02
    placement_group: SamplePlacementGroup
    user_data: CustomUserData
    labels:
      - "sampleLabelName001=sampleLabelValue001"
      - "sampleLabelName002=sampleLabelValue002"
```