GKE 노드 자동 프로비저닝을 사용하여 요청 시 GPU가 포함된 노드 풀을 만들고 싶습니다(GPU 리소스가 필요한 작업을 시작할 때).
cluster autoscaling
GCP 튜토리얼을 진행하면서 활성화 된 클러스터를 설정했습니다 node auto-provisioning
. NAP는 CPU, 메모리, GPU에 대한 제한을 설정했습니다.
resourceLimits:
- maximum: '15'
minimum: '1'
resourceType: cpu
- maximum: '150'
minimum: '1'
resourceType: memory
- maximum: '2'
resourceType: nvidia-tesla-k80
NAP가 이미 몇 개의 노드를 생성했기 때문에 작동한다는 것을 알고 있지만 모두 "정상 노드"(GPU 없음)였습니다.
이제 NAP가 GPU 시스템을 사용하여 노드 풀을 생성하도록 "강제"합니다. 그 전에는 클러스터에 GPU 노드가 없습니다. 이를 위해 다음과 같은 구성 파일을 사용하여 작업을 생성합니다.
apiVersion: batch/v1
kind: Job
metadata:
name: training-job
spec:
ttlSecondsAfterFinished: 100
template:
metadata:
name: training-job
spec:
nodeSelector:
gpu: "true"
cloud.google.com/gke-spot: "true"
cloud.google.com/gke-accelerator: nvidia-tesla-k80
tolerations:
- key: cloud.google.com/gke-spot
operator: Equal
value: "true"
effect: NoSchedule
containers:
- name: gpu-test
image: przomys/gpu-test
resources:
requests:
cpu: 500m
limits:
nvidia.com/gpu: 2 # requesting 2 GPU
restartPolicy: Never # Do not restart containers after they exit
작업이 생성되는 중이지만 "예약 불가능"으로 표시되고 CA 로그에 다음과 같은 오류가 표시됩니다.
{
"noDecisionStatus": {
"measureTime": "1650370630",
"noScaleUp": {
"unhandledPodGroups": [
{
"rejectedMigs": [
{
"reason": {
"messageId": "no.scale.up.mig.failing.predicate",
"parameters": [
"NodeAffinity",
"node(s) didn't match Pod's node affinity/selector"
]
},
"mig": {
"zone": "us-central1-c",
"nodepool": "pool-3",
"name": "gke-cluster-activeid-pool-3-af526144-grp"
}
},
{
"mig": {
"name": "gke-cluster-activeid-nap-e2-standard--c7a4d4f1-grp",
"zone": "us-central1-c",
"nodepool": "nap-e2-standard-2-w52e84k8"
},
"reason": {
"parameters": [
"NodeAffinity",
"node(s) didn't match Pod's node affinity/selector"
],
"messageId": "no.scale.up.mig.failing.predicate"
}
}
],
"napFailureReasons": [
{
"parameters": [
"Any GPU."
],
"messageId": "no.scale.up.nap.pod.gpu.no.limit.defined"
}
],
"podGroup": {
"totalPodCount": 1,
"samplePod": {
"controller": {
"apiVersion": "batch/v1",
"kind": "Job",
"name": "training-job"
},
"namespace": "default",
"name": "training-job-7k8zd"
}
}
}
],
"unhandledPodGroupsTotalCount": 1
}
}
}
내 추측은no.scale.up.nap.pod.gpu.no.limit.defed가장 중요한 부분입니다.GCP 튜토리얼나를 가리킨다여기. 하지만 이 제한을 정의했기 때문에 아이디어가 부족합니다.
어쩌면 내가 뭘 잘못하고 있는지 아는 사람이 있을까요?