首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubectl运行集nodeSelector

Kubectl运行集nodeSelector
EN

Stack Overflow用户
提问于 2018-07-04 03:23:00
回答 5查看 15.8K关注 0票数 20

有没有办法在使用Kubernetes run命令时指定nodeSelector?

我没有yaml文件,我只想覆盖nodeSelector。

我尝试了以下方法,但不起作用:

代码语言:javascript
复制
kubectl run myservice --image myserviceimage:latest --overrides='{ "nodeSelector": { "beta.kubernetes.io/os": "windows" } }'
EN

回答 5

Stack Overflow用户

发布于 2018-07-07 10:43:22

我现在有一个实际的答案..。这里是我的最终答案

为了通过run命令指定节点选择器(并使其在某个节点上运行),我们可以执行以下操作:

0)确保目标节点可以在其上调度pods。我的主节点( master -0)对此毫无准备,因此我必须通过以下命令删除它的污点:

代码语言:javascript
复制
kubectl taint node master-0 node-role.kubernetes.io/master:NoSchedule-

(尾部-很重要),如果需要,master-0将替换为您的姓名。

1)将覆盖命令添加到kubectl run命令中。

代码语言:javascript
复制
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“注册种类"Deployment”

为了解决这个问题,我运行了以下命令:

代码语言:javascript
复制
kubectl api-versions

在这个帖子的推动下,https://github.com/kubernetes/kubernetes/issues/55894选择了“应用程序/v1beta1”

我不确定上面的答案是如何工作的,因为它们在json中没有足够的封装…也不知道:https://github.com/kubernetes/kubernetes/issues/45153是如何工作的,对我来说,问题是:

我遗漏的关键是:它不是.spec.nodeSelector,它必须是.spec.template.spec.nodeSelector

票数 10
EN

Stack Overflow用户

发布于 2018-07-04 19:14:37

试试这个:

kubectl run myservice --image myserviceimage:latest --overrides='{"apiVersion": "v1", "spec": {"nodeSelector": { "beta.kubernetes.io/os": "windows" }}}'

票数 9
EN

Stack Overflow用户

发布于 2020-08-12 17:07:37

必须用spec包装nodeSelector。就像这样

代码语言:javascript
复制
kubectl run -ti --rm test --image=ubuntu:18.04 --overrides='{"spec": { "nodeSelector": {"nodename": "eks-prod-4"}}}'
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51161647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档