为什么Pod在主节点上运行?

时间:2019-11-27 19:56:23

标签: kubernetes

我的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在主服务器上运行?

1 个答案:

答案 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