Docker Kubernetes应用程序在主守护程序上运行

Docker Kubernetes应用程序在主守护程序上运行,docker,configuration,kubernetes,daemon,kubectl,Docker,Configuration,Kubernetes,Daemon,Kubectl,是否有任何方法可以避免在主机上执行作为守护程序部署的应用程序? 我已经看到这是预期的行为,但我希望以某种方式避免执行 常规的pod不会在master上调度,但守护进程pod会在master上调度 如果是,是否可以在yml文件中设置此信息(参数..等) 同时尝试应用以下角色(如建议的),但不起作用: kubectl get nodes NAME STATUS AGE VERSION k8s-agent-e7c

是否有任何方法可以避免在主机上执行作为守护程序部署的应用程序?
我已经看到这是预期的行为,但我希望以某种方式避免执行

常规的pod不会在master上调度,但守护进程pod会在master上调度

如果是,是否可以在yml文件中设置此信息(参数..等)

同时尝试应用以下角色(如建议的),但不起作用:

kubectl get nodes
NAME                    STATUS                     AGE       VERSION
k8s-agent-e7c355e2-0    Ready                      49d       v1.5.3
k8s-agent-e7c355e2-1    Ready                      49d       v1.5.3
k8s-master-e7c355e2-0   Ready,SchedulingDisabled   49d       v1.5.3
我要表演:

VirtualBox:~/elk/logspout$ kubectl taint node k8s-master-e7c355e2-0 k8s-master-e7c355e2-0/ismaster=:NoSchedule
node "k8s-master-e7c355e2-0" tainted
即使看起来主程序被污染了,我看到应用程序总是在主程序上

Role:           
Labels:         beta.kubernetes.io/arch=amd64
            beta.kubernetes.io/instance-type=Standard_D2
            beta.kubernetes.io/os=linux
            failure-domain.beta.kubernetes.io/region=northeurope
            failure-domain.beta.kubernetes.io/zone=0
            kubernetes.io/hostname=k8s-master-e7c355e2-0
Annotations:        volumes.kubernetes.io/controller-managed-attach-detach=true
Taints:         <none>
CreationTimestamp:  Wed, 17 May 2017 14:38:06 +0200
Phase:          
Conditions:
谢谢 Prisco

从中,您可以向主节点kubelet添加一个污染标志,这样即使是守护程序集中的POD也不会安排在那里

   --register-with-taints=node.alpha.kubernetes.io/ismaster=:NoSchedule

您将需要通过
重新启动节点中的kubelet,即使主程序似乎已被污染,我看到应用程序始终在主程序上。
,我不确定守护程序是在污染之前还是之后创建的

如果您先受污染,然后创建了守护程序,则pod将被受污染的节点排斥,无需进一步配置。否则,守护程序中的pod将不会自动终止。要立即驱逐现有POD,需要
NoExecute
taint

发件人:

通常,如果将具有NoExecute效果的污染添加到节点,则 任何不能忍受污染的豆荚将立即被驱逐, 任何能忍受污染的豆荚都不会被驱逐。 但是,具有NoExecute效果的容差可以指定可选的 tolerationSeconds字段,指示pod将被绑定的时间 添加污染后添加到节点


比我快我正在使用Azure。。我得去那里看看怎么做。。我试试看。感谢您也可以使用节点选择器,但正如答案中所建议的,污染是一个更好的解决方案。守护程序集是在之后创建的。无论如何,如果我执行命令来描述节点主节点,我可以在行中看到污点显示为“无”。。。我之前输入的命令正确吗?-我的是
kubectl污染节点角色。kubernetes.io/master=:NoExecute
。IIRC,污点的名字无关紧要。对我来说,它在没有额外配置的情况下工作。您可以共享守护程序清单吗?
Role:           
Labels:         beta.kubernetes.io/arch=amd64
            beta.kubernetes.io/instance-type=Standard_D2
            beta.kubernetes.io/os=linux
            failure-domain.beta.kubernetes.io/region=northeurope
            failure-domain.beta.kubernetes.io/zone=0
            kubernetes.io/hostname=k8s-master-e7c355e2-0
Annotations:        volumes.kubernetes.io/controller-managed-attach-detach=true
Taints:         <none>
CreationTimestamp:  Wed, 17 May 2017 14:38:06 +0200
Phase:          
Conditions:
kubectl taint nodes nameofmaster dedicated=master:NoSchedule
   --register-with-taints=node.alpha.kubernetes.io/ismaster=:NoSchedule