Kubernetes 通过命令应用 nodeSelector

Kubernetes apply nodeSelector via command

有没有办法通过命令应用 nodeSelector? (喜欢kubectl apply

如果它适用于 运行 部署或命名空间,那就太好了,否则适用于 运行 pods 也很好。

如有任何提示,我们将不胜感激

你可以使用 kubectl patch 命令,像这样:

kubectl patch deployments nginx-deployment -p '{"spec": {"template": {"spec": {"nodeSelector": {"kubernetes.io/hostname": "node-2"}}}}}'

成功修补后,所有 pods 部署将在与选择器匹配的节点上重新启动。

确保在命令中包含规范并使用 patch command

 {
   "spec": {
      "template": {
         "spec": {
            "containers": [
               {
                  "name": "patch-demo-ctr-2",
                  "image": "redis"
               }
            ]
         }
      }
   }
}

kubectl patch deployment patch-demo --patch-file patch-file.yaml
kubectl patch deployment patch-demo --patch 'spec:\n template:\n  spec:\n   containers:\n   - name: patch-demo-ctr-2\n     image: redis'

kubectl patch deployment patch-demo --patch-file patch-file.json
kubectl patch deployment patch-demo --patch '{"spec": {"template": {"spec": {"containers": [{"name": "patch-demo-ctr-2","image": "redis"}]}}}}'

您必须确保要定位的节点可以在其上安排 pods。默认主节点(master-0)无法执行此操作,请使用以下命令删除其污点:

[kubectl taint node master-0 node-role.kubernetes.io/master:NoSchedule-]

确保使用与您的 kubernetes 版本匹配的 API 版本。 使用

检查您的版本

[kubectl api-versions]