

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

# Amazon EKS 리소스에 단일 노드 작업 정의 생성
<a name="create-job-definition-eks"></a>

Amazon Elastic Kubernetes Service(Amazon EKS)에서 단일 노드 작업 정의를 생성하려면 다음 단계를 완료합니다.

**Amazon EKS 리소스에 새 작업 정의를 생성하려면**

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) AWS Batch 콘솔을 엽니다.

1. 상단 탐색 모음에서 사용할 AWS 리전 를 선택합니다.

1. 왼쪽 탐색 창에서 **작업 정의**를 선택합니다.

1. **생성(Create)**을 선택합니다.

1. **오케스트레이션 유형**으로는 **Elastic Kubernetes Service(EKS)**를 선택합니다.

1. **이름(Name)**에 고유한 작업 정의 이름을 입력합니다. 각 이름의 최대 길이는 128자입니다. 대문자 및 소문자, 숫자, 하이픈(-) 및 밑줄(\$1)을 포함할 수 있습니다.

1. (선택 사항) **실행 제한 시간**에 제한 시간 값(초)을 입력합니다. 실행 제한 시간은 완료되지 않은 작업이 종료되기까지의 시간입니다. 시도가 제한 시간을 초과하면 중지되고 상태가 `FAILED`(으)로 변경됩니다. 자세한 내용은 [작업 제한 시간](job_timeouts.md) 단원을 참조하십시오. 최솟값은 60초입니다.

1. (선택 사항) **예약 우선 순위**를 켭니다. 0에서 100 사이의 예약 우선 순위 값을 입력합니다. 값이 높을수록 낮은 값보다 우선 순위가 높습니다.

1. (선택 사항) **태그**를 확장한 다음, **태그 추가**를 선택하여 리소스에 태그를 추가합니다.

1. **다음 페이지**를 선택합니다.

1. **EKS pod 속성** 섹션에서:

   1. **서비스 계정 이름**에는 pod에서 실행되는 프로세스의 ID를 제공하는 계정을 입력합니다.

   1. Kubernetes pod 네트워크 모델을 사용하려면 **호스트 네트워크**를 켜고 수신 연결을 위한 수신 포트를 엽니다. 발신 통신에만 이 설정을 끕니다.

   1. **DNS 정책**에서 다음 중 하나를 선택합니다.
      + **값 없음(null)** - pod가 Kubernetes 환경의 DNS 설정을 무시합니다.
      + **기본값** - pod가 실행 중인 노드의 이름 확인 구성을 상속합니다.
**참고**  
DNS 정책이 지정되지 않은 경우 **기본값**은 기본 DNS 정책이 아닙니다. 대신 **ClusterFirst**가 사용됩니다.
      + **ClusterFirst** - 구성된 클러스터 도메인 접미사와 일치하지 않는 모든 DNS 쿼리가 노드에서 상속된 업스트림 이름 서버로 전달됩니다.
      + **ClusterFirstWithHostNet** – **호스트 네트워크**가 켜져 있는 경우에 사용합니다.

   1. (선택 사항) **볼륨**에서 **볼륨 추가**를 선택한 후 다음을 수행합니다.

      1. 볼륨의 **이름**을 추가합니다.

      1. (선택 사항) 호스트의 디렉터리에 대한 **호스트 경로**를 추가합니다.

      1. (선택 사항) **중간** 및 **크기 제한**을 추가하여 [Kubernetes emptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir)을 구성합니다.

      1. (선택 사항) 포드의 **보안 암호 이름**과 보안 암호가 **선택 사항**인지 여부를 제공합니다.

      1. (선택 사항) Kubernetes [영구 볼륨 클레임](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)을 포드에 연결할 **클레임 이름**을 정의하고 **읽기 전용**인지 여부를 정의합니다.

   1. (선택 사항) **포드 레이블**에서는 **포드 레이블 추가**를 선택한 다음 이름-값 쌍을 입력합니다.
**중요**  
포드 레이블의 접두사는`kubernetes.io/`, `k8s.io/` 또는 `batch.amazonaws.com/`을 포함할 수 없습니다.

   1. (선택 사항) **포드 주석**에서 **주석 추가**를 선택한 다음 이름-값 페어를 입력합니다.
**중요**  
포드 주석의 접두사는 `kubernetes.io/`, `k8s.io/` 또는 `batch.amazonaws.com/`을 포함할 수 없습니다.

   1. **다음 페이지**를 선택합니다.

   1. **컨테이너 구성** 섹션에서:

      1. **이름**에 컨테이너의 고유 이름을 입력합니다. 이름은 문자 또는 숫자로 시작되어야 하며 최대 63자여야 합니다. 소문자 및 대문자, 숫자, 하이픈(-)을 포함할 수 있습니다.

      1. **이미지**에서 작업에 사용할 Docker 이미지를 선택합니다. 기본적으로 Docker Hub 레지스트리 내 이미지는 사용 가능합니다. 또한 `repository-url/image:tag`(을)를 사용하여 다른 리포지토리를 지정할 수도 있습니다. 이름은 최대 255자입니다. 대문자와 소문자, 숫자, 하이픈(-), 밑줄(\$1), 콜론(:), 마침표(.), 슬래시(/) 및 숫자 기호(\$1)를 포함할 수 있습니다. 이 파라미터는 [Docker 원격 API](https://docs.docker.com/engine/api/v1.38/)의 [컨테이너 생성](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) 섹션에 있는 `Image`와 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)의 `IMAGE` 파라미터로 매핑됩니다.
**참고**  
도커 이미지 아키텍처는 예정된 컴퓨팅 리소스의 프로세서 아키텍처와 일치해야 합니다. 예를 들어 ARM 기반 Docker 이미지는 ARM 기반 컴퓨팅 리소스에서만 실행할 수 있습니다.
         + Amazon ECR Public 리포지토리에 있는 이미지는 전체 `registry/repository[:tag]` 또는 `registry/repository[@digest]` 명명 규칙을 사용합니다(예: `public.ecr.aws/registry_alias/my-web-app:latest`).
         + Amazon ECR 리포지토리에 있는 이미지는 전체 `registry/repository[:tag]` 명명 규칙을 사용합니다 (예: `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`).
         + Docker Hub의 공식 리포지토리 안의 이미지는 단일 이름을 사용합니다(예: `ubuntu` 또는 `mongo`).
         + Docker Hub 다른 리포지토리에 저장된 이미지는 조직 이름으로 한정됩니다(예: `amazon/amazon-ecs-agent`).
         + 다른 온라인 리포지토리 안의 이미지는 도메인 이름을 사용하여 추가로 한정됩니다(예: `quay.io/assemblyline/ubuntu`).

      1. (선택 사항) **이미지 풀 정책**에는 이미지를 가져오는 시기를 선택합니다.

      1. (선택 사항) **명령**에는 컨테이너에 전달할 JSON 명령을 입력합니다.

      1. (선택 사항) **인수**에는 컨테이너로 전달할 인수를 입력합니다. 인수가 제공되지 않으면 컨테이너 이미지 명령이 사용됩니다.

   1. (선택 사항) 작업 정의에 파라미터를 이름-값 매핑으로 추가하여 작업 정의 기본값을 재정의할 수 있습니다. 파라미터를 추가하려면

      1. **파라미터**에 이름-값 쌍을 입력한 다음, **파라미터 추가**를 선택합니다.
**중요**  
**파라미터 추가**를 선택한 경우 하나 이상의 파라미터를 구성하거나 **파라미터 제거**를 선택해야 합니다.

   1. **환경 구성** 섹션에서:

      1. **vCPU**에서 컨테이너에 예약할 vCPU 수를 지정합니다. 이 파라미터는 [Docker 원격 API(Docker Remote API)](https://docs.docker.com/engine/api/v1.38/)의 [컨테이너 생성(Create a container)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) 섹션에 있는 `CpuShares`(와)과 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)에 대한 `--cpu-shares` 옵션에 매핑됩니다. 각 vCPU는 1,024개의 CPU 공유와 동일합니다. vCPU를 최소 하나 이상 지정해야 합니다.

      1. **메모리**에는 컨테이너에 사용할 수 있는 메모리 한도를 입력합니다. 컨테이너가 여기에 지정된 메모리를 초과하려 하면 해당 컨테이너가 중지됩니다. 이 파라미터는 [Docker 원격 API(Docker Remote API)](https://docs.docker.com/engine/api/v1.38/)의 [컨테이너 생성(Create a container)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) 섹션에 있는 `Memory`(와)과 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)에 대한 `--memory` 옵션에 매핑됩니다. 한 작업에 대해 메모리를 최소한 4MiB 지정해야 합니다.
**참고**  
리소스 사용률을 극대화하려면 특정 인스턴스 유형의 작업에 메모리 우선 순위를 지정합니다. 자세한 내용은 [컴퓨팅 리소스 메모리 관리](memory-management.md) 단원을 참조하십시오.

   1. (선택 사항) **환경 변수**의 경우 **환경 변수 추가**를 선택하여 환경 변수를 이름-값 쌍으로 추가합니다. 이러한 변수는 컨테이너로 전달됩니다.

   1. (선택 사항) **볼륨 마운트**에서

      1. **볼륨 마운트 추가**를 선택합니다.

      1. **이름**을 입력한 다음, 볼륨이 마운트된 컨테이너의 **마운트 경로**를 입력합니다. **SubPath**를 입력하여 루트 대신 참조된 볼륨 내부에서 하위 경로를 지정합니다.

      1. 볼륨에 대한 쓰기 권한을 제거하려면 **읽기 전용**을 선택합니다.

      1. **볼륨 마운트 추가**를 선택합니다.

   1. (선택 사항) **사용자로 실행**에 컨테이너 프로세스를 실행할 사용자 ID를 입력합니다.
**참고**  
컨테이너를 실행하려면 이미지에 사용자 ID가 있어야 합니다.

   1. (선택 사항) **그룹으로 실행**에 컨테이너 프로세스 런타임을 실행할 그룹 ID를 입력합니다.
**참고**  
컨테이너를 실행하려면 이미지에 그룹 ID가 있어야 합니다.

   1. (선택 사항) 작업 컨테이너에 호스트 인스턴스에 대한 승격된 권한(`root` 사용자와 비슷함)을 부여하려면 **권한이 있음** 슬라이더를 오른쪽으로 드래그합니다. 이 파라미터는 [Docker 원격 API(Docker Remote API)](https://docs.docker.com/engine/api/v1.38/)의 [컨테이너 생성(Create a container)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) 섹션에 있는 `Privileged`(와)과 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)에 대한 `--privileged` 옵션에 매핑됩니다.

   1. (선택 사항) 루트 파일 시스템에 대한 쓰기 액세스를 제거하려면 **읽기 전용 루트 파일 시스템**을 켭니다.

   1. (선택 사항) 루트가 아닌 사용자로 pod에서 컨테이너를 실행하려면 **루트가 아닌 상태로 실행**을 켭니다.
**참고**  
**루트가 아닌 상태로 실행**이 켜져 있는 경우, kubelet은 런타임 시 이미지의 유효성을 검사하여 이미지가 UID 0으로 실행되지 않는지 확인합니다.

   1. **다음 페이지**를 선택합니다.

1. **작업 정의 검토**에서 구성 단계를 검토하세요. 변경해야 하는 경우 **편집**을 선택합니다 작업을 마쳤으면 **작업 정의 생성**을 선택합니다.