

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EKS 시작 템플릿 사용자 지정
<a name="eks-launch-templates"></a>

AWS Batch Amazon EKS의는 시작 템플릿을 지원합니다. 시작 템플릿으로 수행할 수 있는 작업에는 제약이 있습니다.

**중요**  
EKS AL2 AMIs 경우를 AWS Batch 실행합니다`/etc/eks/bootstrap.sh`. 시작 템플릿이나 cloud-init user-data 스크립트에서 `/etc/eks/bootstrap.sh`를 실행하지 않습니다. `--kubelet-extra-args` 파라미터 외에 다른 파라미터를 [bootstrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh)로 추가할 수 있습니다. 이렇게 하려면 `/etc/aws-batch/batch.config` 파일에 `AWS_BATCH_KUBELET_EXTRA_ARGS` 변수를 설정합니다. 자세한 내용은 다음 예제를 참조하세요.
EKS AL2023의 경우는 EKS의 [NodeConfigSpec](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec)을 AWS Batch 사용하여 인스턴스를 EKS 클러스터에 조인합니다. AWS Batch 는 EKS 클러스터에 대해 [NodeConfigSpec](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec)의 [ClusterDetails](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#clusterdetails)를 채우므로 지정할 필요가 없습니다.

**참고**  
가 값을 AWS Batch 재정의하므로 시작 템플릿에서 다음 [https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec) 설정을 설정하지 않는 것이 좋습니다. 자세한 내용은 [Kubernetes 노드에 대한 공동 책임](eks-ce-shared-responsibility.md) 단원을 참조하십시오.  
`Taints`
`Cluster Name`
`apiServerEndpoint`
`certificatAuthority`
`CIDR`
접두사 `batch.amazonaws.com/`가 있는 레이블을 생성하지 마세요.

**참고**  
[CreateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateComputeEnvironment.html)를 호출한 후 시작 템플릿이 변경된 경우 [https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html)를 호출하여 교체할 시작 템플릿의 버전을 평가해야 합니다.

**Topics**
+ [`kubelet` 추가 인수 추가](#kubelet-extra-args)
+ [컨테이너 런타임 구성](#change-container-runtime)
+ [Amazon EFS 볼륨 마운트](#mounting-efs-volume)
+ [IPv6 지원](#eks-ipv6-support)

## `kubelet` 추가 인수 추가
<a name="kubelet-extra-args"></a>

AWS Batch 는 `kubelet` 명령에 추가 인수 추가를 지원합니다. 지원되는 파라미터 목록은 *Kubernetes 설명서*의 [https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) 섹션을 참조하세요. EKS AL2 AMI에 대한 다음 예제에서는 `{{--node-labels mylabel=helloworld}}`가 `kubelet` 명령줄에 추가됩니다.

```
MIME-Version: 1.0
      Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

      --==MYBOUNDARY==
      Content-Type: text/x-shellscript; charset="us-ascii"

      #!/bin/bash
      mkdir -p /etc/aws-batch

      echo AWS_BATCH_KUBELET_EXTRA_ARGS=\"{{--node-labels mylabel=helloworld}}\" >> /etc/aws-batch/batch.config

      --==MYBOUNDARY==--
```

EKS AL2023 AMI의 경우, 파일 형식은 YAML입니다. 지원되는 파라미터 목록은 *Kubernetes 설명서*의 [https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec) 섹션을 참조하세요. EKS AL2023 AMI에 대한 다음 예제에서는 `{{--node-labels mylabel=helloworld}}`가 `kubelet` 명령줄에 추가됩니다.

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: application/node.eks.aws

apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  kubelet:
    flags:
    - --{{node-labels=mylabel=helloworld}}

--==MYBOUNDARY==--
```

## 컨테이너 런타임 구성
<a name="change-container-runtime"></a>

환경 변수를 사용하여 AWS Batch `CONTAINER_RUNTIME` 관리형 노드에서 컨테이너 런타임을 구성할 수 있습니다. 다음 예제에서는 컨테이너 런타임을 `containerd` 실행 시점의 `bootstrap.sh`로 설정합니다. 자세한 내용은 *Kubernetes 설명서*의 [https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd](https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd) 섹션을 참조하세요.

최적화 `EKS_AL2023` 또는 `EKS_AL2023_NVIDIA` AMI를 사용하는 경우, **containerd**만 지원되므로 컨테이너 런타임을 지정할 필요가 없습니다.

**참고**  
`CONTAINER_RUNTIME` 환경 변수는 `bootstrap.sh`의 `--container-runtime` 옵션과 동일합니다. 자세한 내용은 *Kubernetes 설명서*의 [https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/#options](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/#options) 섹션을 참조하세요.

```
MIME-Version: 1.0
      Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

      --==MYBOUNDARY==
      Content-Type: text/x-shellscript; charset="us-ascii"

      #!/bin/bash
      mkdir -p /etc/aws-batch

      echo CONTAINER_RUNTIME=containerd >> /etc/aws-batch/batch.config

      --==MYBOUNDARY==--
```

## Amazon EFS 볼륨 마운트
<a name="mounting-efs-volume"></a>

시작 템플릿을 사용하여 볼륨을 노드에 마운트할 수 있습니다. 다음 예제에서는 `cloud-config` `packages` 및 `runcmd` 설정이 사용됩니다. 자세한 내용은 *cloud-init 설명서*의 [Cloud 구성 예제](https://cloudinit.readthedocs.io/en/latest/topics/examples.html)를 참조하세요.

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"

packages:
- amazon-efs-utils

runcmd:
- file_system_id_01=fs-abcdef123
- efs_directory=/mnt/efs

- mkdir -p ${efs_directory}
- echo "${file_system_id_01}:/ ${efs_directory} efs _netdev,noresvport,tls,iam 0 0" >> /etc/fstab
- mount -t efs -o tls ${file_system_id_01}:/ ${efs_directory}

--==MYBOUNDARY==--
```

작업에서 이 볼륨을 사용하려면 [RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html)에 대한 [eksProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksProperties.html) 파라미터에 이 볼륨을 추가해야 합니다. 다음 예제는 작업 정의의 많은 부분입니다.

```
{
    "jobDefinitionName": "MyJobOnEks_EFS",
    "type": "container",
    "eksProperties": {
        "podProperties": {
            "containers": [
                {
                    "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
                    "command": ["ls", "-la", "/efs"],
                    "resources": {
                        "limits": {
                            "cpu": "1",
                            "memory": "1024Mi"
                        }
                    },
                    "volumeMounts": [
                        {
                            "name": "{{efs-volume}}",
                            "mountPath": "{{/efs}}"
                        }
                    ]
                }
            ],
            "volumes": [
                {
                    "name": "{{efs-volume}}",
                    "hostPath": {
                        "path": "{{/mnt/efs}}"
                    }
                }
            ]
        }
    }
}
```

노드에서 Amazon EFS 볼륨은 `/mnt/efs` 디렉터리에 마운트됩니다. Amazon EKS 작업을 위한 컨테이너에서 볼륨은 `/efs` 디렉터리에 마운트됩니다.

## IPv6 지원
<a name="eks-ipv6-support"></a>

AWS Batch 는 IPv6 주소가 있는 Amazon EKS 클러스터를 지원합니다. AWS Batch 지원에는 사용자 지정이 필요하지 않습니다. 하지만 시작하기 전에 *Amazon EKS 사용 설명서*의 [포드 및 서비스에 IPv6 주소 할당](https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html)에 설명된 고려 사항 및 조건을 검토하는 것이 좋습니다.