특정 노드에서 Pods가 스케줄링되지 않도록 방지 - Amazon EKS

특정 노드에서 Pods가 스케줄링되지 않도록 방지

GPU와 같은 특수 프로세서가 있는 노드는 더 많은 표준 시스템에서 실행되는 노드보다 실행 비용이 더 많이 들 수 있습니다. 따라서 특수 하드웨어가 필요하지 않은 워크로드가 해당 노드에 배포되지 않도록 해당 노드를 보호하는 것이 좋습니다. 이를 위한 한 가지 방법은 테인트를 사용하는 것입니다.

Amazon EKS는 관리형 노드 그룹을 통해 Kubernetes 테인트 구성을 지원합니다. 테인트 및 허용 오차는 함께 작동하여 Pods가 부적절한 노드에 예약되지 않도록 합니다. 하나 이상의 테인트를 노드에 적용할 수 있습니다. 이것은 노드가 테인트를 용납하지 않는 Pods를 허용해서는 안 된다는 것을 나타냅니다. 허용 오차는 Pods에 적용되며 일치하는 테인트가 있는 노드에 Pods를 예약할 수는 있지만 필요하지 않습니다. 테인트와 허용 오차에 대한 자세한 내용을 알아보려면 Kubernetes설명서를 참조하세요.

AWS Management Console을 사용하거나 Amazon EKS API를 통해 Kubernetes 노드 테인트를 신규 및 기존 관리형 노드 그룹에 적용할 수 있습니다.

  • AWS Management Console를 사용하여 테인트가 있는 노드 그룹을 생성하는 방법에 대한 자세한 내용은 클러스터에 대한 관리형 노드 그룹 생성를 참조하십시오.

  • 다음은 AWS CLI를 사용하여 테인트가 있는 노드 그룹을 생성하는 예제입니다.

    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참조 설명서를 참조하세요.

참고
  • UpdateNodegroupConfig API를 사용하여 노드 그룹을 생성한 후 테인트를 업데이트할 수 있습니다.

  • 테인트 키는 문자 또는 숫자로 시작해야 합니다. 문자, 숫자, 하이픈(-), 마침표(.) 또는 밑줄(_)을 포함할 수 있습니다. 최대 63자까지 가능합니다.

  • 경우에 따라, 테인트 키는 DNS 하위 도메인 접두사와 단일 /로 시작할 수 있습니다. DNS 하위 도메인 접두사로 시작하는 경우 253자가 될 수 있습니다.

  • 이 값은 선택 사항이며 문자 또는 숫자로 시작해야 합니다. 문자, 숫자, 하이픈(-), 마침표(.) 또는 밑줄(_)을 포함할 수 있습니다. 최대 63자까지 가능합니다.

  • Kubernetes을 직접 사용하거나 AWS Management Console를 사용하는 경우 오염 효과는NoSchedule, PreferNoSchedule, 또는 NoExecute이어야 합니다. AWS CLI나 API를 직접 사용하는 경우 오염 효과는NO_SCHEDULEPREFER_NO_SCHEDULE, 또는 NO_EXECUTE 이어야 합니다.

  • 한 노드 그룹에 대해 최대 50개의 테인트가 허용됩니다.

  • 관리형 노드 그룹을 사용하여 생성한 테인트를 노드에서 수동으로 제거하는 경우 Amazon EKS는 해당 테인트를 노드에 다시 추가하지 않습니다. 이는 관리형 대상 노드 그룹 구성에 테인트가 지정된 경우에도 마찬가지입니다.

aws eks update-nodegroup-config AWS CLI 명령을 사용하여 관리형 노드 그룹의 테인트를 추가, 제거 또는 교체할 수 있습니다.