我的kubernetes集群如下所示:
k get nodes
NAME STATUS ROLES AGE VERSION
k8s-1 Ready master 2d22h v1.16.2
k8s-2 Ready master 2d22h v1.16.2
k8s-3 Ready master 2d22h v1.16.2
k8s-4 Ready master 2d22h v1.16.2
k8s-5 Ready <none> 2d22h v1.16.2
k8s-6 Ready <none> 2d22h v1.16.2
k8s-7 Ready <none> 2d22h v1.16.2
如您所见,集群由4个主节点和3个节点组成。
这些是正在运行的豆荚:
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
default greeter-service-v1-8d97f9bcd-2hf4x 2/2 Running 0 47h 10.233.69.7 k8s-6 <none> <none>
default greeter-service-v1-8d97f9bcd-gnsvp 2/2 Running 0 47h 10.233.65.3 k8s-2 <none> <none>
default greeter-service-v1-8d97f9bcd-lkt6p 2/2 Running 0 47h 10.233.68.9 k8s-7 <none> <none>
default helloweb-77c9476f6d-7f76v 2/2 Running 0 47h 10.233.64.3 k8s-1 <none> <none>
default helloweb-77c9476f6d-pj494 2/2 Running 0 47h 10.233.69.8 k8s-6 <none> <none>
default helloweb-77c9476f6d-tnqfb 2/2 Running 0 47h 10.233.70.7 k8s-5 <none> <none>
为什么pod greeter-service-v1-8d97f9bcd-gnsvp和helloweb-77c9476f6d-7f76v在主服务器上运行?
答案 0 :(得分:1)
默认情况下,除非有Taint
之类的node-role.kubernetes.io/master:NoSchedule
,否则在主节点上调度Pod没有任何限制。
您可以使用以下命令验证主节点上是否有污点
kubectl describe k8s-1
或
kubectl get node k8s-secure-master.linxlabs.com -o jsonpath={.spec.taints[]} && echo
如果您想留下污点,请在下面使用
kubectl taint node k8s-1 node-role.kubernetes.io/master="":NoSchedule
添加污渍后,除非在Pod规范上具有相匹配的容忍度,否则不会在此节点上安排新的Pod。
详细了解污染和容忍here