

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

# 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\$1id: String
        instance\$1type: String
        key\$1pair: String
        root\$1volume\$1encryption: Boolean
        root\$1volume\$1encryption\$1key\$1arn: String    
        root\$1volume\$1size: Integer
    scaling:
      properties:
        desired\$1size: Integer
        min\$1size: Integer
        max\$1size: Integer  
  properties:
    node\$1role: String    
    tags: List          
  requirements:
    cluster: String
    subnets: List
    network\$1interfaces: List
    security\$1groups: List
    placement\$1group: String
    user\$1data: String
    labels: List
```

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

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

 `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`为 false，则不包含`root_volume_encryption_key_arn`。
+ AWS TNB 支持对亚马逊 EBS 支持的 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>`scaling`

定义 Amazon EKS 自管理节点的扩展参数的属性，例如所需的亚马逊 EC2 实例数量以及节点组中最小和最大亚马逊 EC2 实例数量。

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

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

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

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

 `node_role`    
附加到亚马逊 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`，如果您在 a [w](https://docs.aws.amazon.com/tnb/latest/ug/node-eks.html) s.Compute.eks 节点中包含了该`multus_role`属性，则 AWS TNB 将 ENIs 从该`multus`属性获得与相关的权限。否则， AWS TNB 将 ENIs 从 n [od](#node_eks_self_managed_node_role) e\$1role 属性中获取与相关的权限。  
必需：否  
类型：列表

 `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\$1role。  
必需：否  
类型：字符串

 `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"
```