이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
EKS Auto Mode 노드에 워크로드 배포 여부 제어
EKS Auto Mode를 사용하여 EKS 클러스터에서 워크로드를 실행하는 경우 특정 워크로드가 EKS Auto Mode 노드에서 실행되는지 또는 기타 컴퓨팅 유형에서 실행되는지 여부를 제어해야 할 수 있습니다. 이 주제에서는 노드 선택기 및 선호도 규칙을 사용하여 워크로드가 의도한 컴퓨팅 인프라에 예약되게 하는 방법을 설명합니다.
이 주제의 예제에서는 eks.amazonaws.com/compute-type 레이블을 사용하여 EKS Auto Mode 노드에서 워크로드 배포를 요구하거나 방지하는 방법을 보여줍니다. 이는 EKS Auto Mode와 자체 관리형 Karpenter 프로비저너 또는 EKS 관리형 노드 그룹과 같은 기타 컴퓨팅 유형을 모두 실행하는 혼합 모드 클러스터에서 특히 유용합니다.
EKS Auto Mode 노드가 eks.amazonaws.com/compute-type 레이블 값을 auto로 설정했습니다. 이 레이블을 사용하여 EKS Auto Mode에서 관리하는 노드에 워크로드가 배포되는지 여부를 제어할 수 있습니다.
워크로드가 EKS Auto Mode 노드에 배포되어야 함
참고
이 nodeSelector 값은 EKS Auto Mode에 필요하지 않습니다. 이 nodeSelector 값은 EKS Auto Mode에서 관리하지 않는 노드 유형인 혼합 모드에서 클러스터를 실행하는 경우에만 관련이 있습니다. 예를 들어 EKS 관리형 노드 그룹을 사용하여 클러스터에 정적 컴퓨팅 용량을 배포하고 EKS Auto Mode에서 동적 컴퓨팅 용량을 관리할 수 있습니다.
이 nodeSelector를 배포 또는 기타 워크로드에 추가하여 Kubernetes가 EKS Auto Mode 노드에서 예약하도록 요구할 수 있습니다.
apiVersion: apps/v1 kind: Deployment spec: template: spec: nodeSelector: eks.amazonaws.com/compute-type: auto
워크로드가 EKS Auto Mode 노드에 배포되지 않아야 함
이 nodeAffinity를 배포 또는 기타 워크로드에 추가하여 Kubernetes가 EKS Auto Mode 노드에서 예약하지 않도록 요구할 수 있습니다.
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - auto
특정 NodePool을 대상으로 지정
Amazon EKS Auto Mode 클러스터에는 둘 이상의 NodePool이 있을 수 있습니다. 워크로드를 특정 NodePool의 노드에서만 실행하도록 하려고 합니다. 이를 위해 워크로드는 다음 레이블 중 하나와 일치할 수 있습니다.
-
NodePool에서 정의하는 사용자 지정 레이블. NodePool의
spec.template.metadata.labels에 레이블을 추가하면 Amazon EKS Auto Mode는 NodePool이 프로비저닝하는 모든 노드에 해당 레이블을 적용합니다. 사용자 지정 레이블이 권장되는 접근 방식입니다. 사용자 지정 레이블은 워크로드를 특정 NodePool 이름 대신workload-class: gpu-inference와 같은 기능에 연결합니다. -
잘 알려진
karpenter.sh/nodepool레이블. Amazon EKS Auto Mode는 NodePool의 이름을 값으로 사용하여 프로비저닝하는 모든 노드에 이 레이블을 적용합니다. 사용자 지정 레이블을 정의하지 않았고 이름을 사용해 NodePool을 대상으로 지정하려는 경우 이 레이블을 사용합니다.
사용자 지정 NodePool 레이블을 대상으로 지정
먼저 NodePool에서 레이블을 정의합니다.
apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: gpu spec: template: metadata: labels: workload-class: gpu-inference
NodePool 구성에 대한 자세한 내용은 EKS Auto Mode용 노드 풀 생성 섹션을 참조하세요.
다음으로 워크로드에서 해당 레이블을 일치시킵니다.
apiVersion: apps/v1 kind: Deployment metadata: name: inference spec: template: spec: nodeSelector: workload-class: gpu-inference
이 배포의 포드는 gpu NodePool이 프로비저닝하는 노드로만 예약됩니다. 이 nodeSelector가 없는 워크로드는 기본 NodePool에서 계속 실행됩니다.
이름을 사용해 NodePool을 대상으로 지정
NodePool 이름 변경은 예약에 영향을 미칩니다.
워크로드를 이름으로 고정하면 대상 NodePool의 이름을 바꾸거나 삭제할 경우 포드가 Pending 상태로 남겨질 수 있습니다. 단일 NodePool 정의보다 오래 지속될 것으로 예상되는 워크로드에는 사용자 지정 기능 레이블을 사용합니다.
apiVersion: apps/v1 kind: Deployment spec: template: spec: nodeSelector: karpenter.sh/nodepool: <your-nodepool-name>
Karpenter가 포드를 NodePool과 일치시키는 방법에 대한 자세한 내용은 Karpenter 설명서의 Scheduling