

 **이 페이지 개선에 도움 주기** 

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 **GitHub에서 이 페이지 편집** 링크를 선택합니다.

# 레시피: 특정 노드에서 포드가 예약되지 않도록 방지
<a name="node-taints-managed-node-groups"></a>

## 개요
<a name="_overview"></a>

GPU와 같은 특수 프로세서가 있는 노드는 표준 시스템의 노드보다 실행 비용이 더 많이 들 수 있습니다. 특수 하드웨어가 필요하지 않은 워크로드로부터 이러한 노드를 보호하려면 Kubernetes 테인트를 사용할 수 있습니다. 테인트는 노드를 표시하여 일치하는 허용 오차가 없는 포드를 수락하지 않으므로 호환되는 워크로드만 예약됩니다. 자세한 내용은 Kubernetes 설명서의 [테인트와 허용 오차](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)를 참조하세요.

AWS Management Console을 사용하거나 Amazon EKS API를 통해 Kubernetes 노드 테인트를 신규 및 기존 관리형 노드 그룹에 적용할 수 있습니다. 이 레시피는 AWS CLI를 사용하여 Amazon EKS 관리형 노드 그룹에 테인트를 적용하는 방법을 보여줍니다. AWS Management Console를 사용하여 테인트가 있는 노드 그룹을 생성하는 방법에 대한 자세한 내용은 [클러스터에 대한 관리형 노드 그룹 생성](create-managed-node-group.md)를 참조하세요.

## 사전 조건
<a name="_prerequisites"></a>
+ [기존 Amazon EKS 클러스터](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html).
+  적절한 권한으로 [설치 및 구성된 AWS CLI](https://docs.aws.amazon.com/eks/latest/userguide/setting-up.html)

## 단계
<a name="_steps"></a>

### 1단계: 테인트가 있는 노드 그룹 생성
<a name="_step_1_create_a_node_group_with_taints"></a>

`aws eks create-nodegroup` 명령을 사용하여 테인트가 있는 새 관리형 노드 그룹을 생성합니다. 이 예시에서는 키 `dedicated`, 값 `gpuGroup` 및 효과 `NO_SCHEDULE`을 테인트에 적용합니다.

```
aws eks create-nodegroup \
 --cli-input-json '
{
  "clusterName": "my-cluster",
  "nodegroupName": "node-taints-example",
  "subnets": [
     "subnet-1234567890abcdef0",
     "subnet-abcdef01234567890",
     "subnet-021345abcdef67890"
   ],
  "nodeRole": "arn:aws:iam::111122223333:role/AmazonEKSNodeRole",
  "taints": [
     {
         "key": "dedicated",
         "value": "gpuGroup",
         "effect": "NO_SCHEDULE"
     }
   ]
}'
```

자세한 내용 및 사용 예시는 Kubernetes 참조 설명서의 [taint](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#taint)를 참조하세요.

### 2단계: 기존 노드 그룹의 테인트 업데이트
<a name="_step_2_update_taints_on_an_existing_node_group"></a>

[aws eks update-nodegroup-config](https://docs.aws.amazon.com/cli/latest/reference/eks/update-nodegroup-config.html) AWS CLI 명령을 사용하여 관리형 노드 그룹의 테인트를 추가, 제거 또는 교체합니다.

```
aws eks update-nodegroup-config
  --cluster-name my-cluster
  --nodegroup-name node-taints-example
  --taints 'removeTaints=[{key=dedicated,value=gpuGroup,effect=NO_SCHEDULE}]'
```

## Notes
<a name="_notes"></a>
+ `UpdateNodegroupConfig` API를 사용하여 노드 그룹을 생성한 후 테인트를 업데이트할 수 있습니다.
+ 테인트 키는 문자 또는 숫자로 시작해야 합니다. 문자, 숫자, 하이픈(`-`), 마침표(`.`) 또는 밑줄(`_`)을 포함할 수 있습니다. 최대 63자까지 가능합니다.
+ 경우에 따라, 테인트 키는 DNS 하위 도메인 접두사와 단일 `/`로 시작할 수 있습니다. DNS 하위 도메인 접두사로 시작하는 경우 253자가 될 수 있습니다.
+ 이 값은 선택 사항이며 문자 또는 숫자로 시작해야 합니다. 문자, 숫자, 하이픈(`-`), 마침표(`.`) 또는 밑줄(`_`)을 포함할 수 있습니다. 최대 63자까지 가능합니다.
+ Kubernetes를 직접 사용하거나 AWS Management Console을 사용하는 경우 테인트 효과는 `NoSchedule`, `PreferNoSchedule` 또는 `NoExecute`여야 합니다. AWS CLI나 API를 직접 사용하는 경우 오염 효과는`NO_SCHEDULE``PREFER_NO_SCHEDULE`, 또는 `NO_EXECUTE` 이어야 합니다.
+ 한 노드 그룹에 대해 최대 50개의 테인트가 허용됩니다.
+ 관리형 노드 그룹을 사용하여 생성한 테인트를 노드에서 수동으로 제거하는 경우 Amazon EKS는 해당 테인트를 노드에 다시 추가하지 않습니다. 이는 관리형 대상 노드 그룹 구성에 테인트가 지정된 경우에도 마찬가지입니다.