У меня есть актуальный ответ сейчас ... Вот мой окончательный ответ :
Чтобы указать селектор узла с помощью команды запуска (и заставить его работать так, чтобы он работал на определенном узле), мы можем сделать следующее:
0) Убедитесь, что узел, на который вы хотите настроить таргетинг, может запланировать на нем pods. Мой главный узел (master-0) не был подготовлен к этому, поэтому мне пришлось удалить его заражение с помощью команды:
kubectl taint node master-0 node-role.kubernetes.io/master:NoSchedule-
(Трейлинг - важен), и где master-0 заменяется вашим именем, если это необходимо.
1) Добавьте команду переопределения к команде запуска kubectl.
run hello-world --replicas=1 --labels="run=load-balancer-example" --image=gcr.io/google-samples/node-hello:1.0 --port=8080 --overrides='{ "apiVersion": "apps/v1beta1", "spec": { "template": { "spec": { "nodeSelector": { "kubernetes.io/hostname": "master-0" } } } } }'
* Убедитесь, что ваш apiVersion поддерживается ... При попытке использовать v1 я получил следующую ошибку:
ошибка: для версии "v1" не зарегистрирован тип "Развертывание"
Чтобы обойти это, я выполнил команду:
kubectl api-versions
и по настоянию этой темы https://github.com/kubernetes/kubernetes/issues/55894 выбрал "apps / v1beta1"
Я не уверен, как работают вышеуказанные ответы, так как им не хватает инкапсуляции в json ... ни как: https://github.com/kubernetes/kubernetes/issues/45153 работает, так как для меня проблема заключалась в том, что:
Ключ, который мне не хватало, заключался в следующем: это не .spec.nodeSelector
, это должно быть .spec.template.spec.nodeSelector