Я хочу использовать автоматическую подготовку узла GKE для создания пула узлов с GPU по требованию (то есть, когда я запускаю задание, которому требуются ресурсы GPU).
Следуя руководству по GCP, я настроил кластер с включенным автоматическое масштабирование кластера
и автоматическая инициализация узла
. NAP установил ограничения для ЦП, памяти и графического процессора:
лимиты ресурсов:
- максимум: «15»
минимум: '1'
Тип ресурса: ЦП
- максимум: «150»
минимум: '1'
Тип ресурса: память
- максимум: «2»
Тип ресурса: nvidia-tesla-k80
Я знаю, что NAP работает, потому что он уже раскрутил для меня несколько узлов, но все они были «обычными» (без GPU).
Теперь, чтобы «заставить» NAP создать пул узлов с машиной GPU. До этого в кластере не было узла GPU.Для этого я создаю Job с таким файлом конфигурации:
apiVersion: партия/v1
вид: работа
метаданные:
название: обучение-работа
спецификация:
ttlSecondsAfterFinished: 100
шаблон:
метаданные:
название: обучение-работа
спецификация:
селектор узла:
ГПУ: "правда"
cloud.google.com/gke-spot: "правда"
cloud.google.com/gke-акселератор: nvidia-tesla-k80
допуски:
- ключ: cloud.google.com/gke-spot
оператор: равно
значение: "истина"
эффект: NoSchedule
контейнеры:
- имя: GPU-тест
изображение: przomys/gpu-test
Ресурсы:
Запросы:
процессор: 500 м
пределы:
nvidia.com/gpu: 2 # запрашивает 2 графических процессора
restartPolicy: Never # Не перезапускать контейнеры после их выхода
Задание создается, но затем оно помечается как «Незапланированное», и CA Log выдает мне такую ошибку:
{
"noDecisionStatus": {
"measureTime": "1650370630",
"без масштабирования": {
"необработанные группы подгрупп": [
{
"отклонено Мигс": [
{
"причина": {
"messageId": "no.scale.up.mig.failing.predicate",
"параметры": [
"Сходство узлов",
«узел (узлы) не соответствует привязке/селектору узла Pod»
]
},
"миг": {
"зона": "us-central1-c",
"пул узлов": "пул-3",
"name": "gke-cluster-activeid-pool-3-af526144-grp"
}
},
{
"миг": {
"name": "gke-cluster-activeid-nap-e2-standard--c7a4d4f1-grp",
"зона": "us-central1-c",
"nodepool": "сон-e2-стандарт-2-w52e84k8"
},
"причина": {
"параметры": [
"Сходство узлов",
«узел (узлы) не соответствует привязке/селектору узла Pod»
],
"messageId": "no.scale.up.mig.failing.predicate"
}
}
],
"Причины ворса: [
{
"параметры": [
«Любой графический процессор».
],
"messageId": "no.scale.up.nap.pod.gpu.no.limit.defined"
}
],
"подгруппа": {
"общийПодсчет": 1,
"образецПод": {
"контроллер": {
"apiVersion": "пакет/v1",
"вид": "Работа",
"имя": "обучение"
},
"пространство имен": "по умолчанию",
"name": "обучение-работа-7k8zd"
}
}
}
],
"необработанный PodGroupsTotalCount": 1
}
}
}
Я предполагаю, что no.scale.up.nap.pod.gpu.no.limit.defined является наиболее важной частью. Руководство по GCP указывает на меня здесь. Но у меня есть этот предел, поэтому у меня нет идей...
Может быть, у кого-то есть идеи, что я делаю неправильно?