防止用户将Pod部署到主数据库中

时间:2019-09-24 10:50:00

标签: kubernetes

是否有办法禁止对SchedulingDisabled主节点执行pod调度?

如果吊舱使用此公差,则可以随时对其进行安排:

tolerations:
- operator: Exists

主节点具有以下污点:

Taints:             node-role.kubernetes.io/master:NoSchedule
                    node.kubernetes.io/unschedulable:NoSchedule
Unschedulable:      true
$ kubectl get pod -o wide
NAME                        READY   STATUS             RESTARTS   AGE     IP              NODE                              NOMINATED NODE   READINESS GATES
deploy-b976f9795-rc2t5   1/1     Running   0          5m51s   192.168.0.15    master01   <none>           <none>
$ kubectl get node -o wide
NAME                              STATUS                     ROLES    AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
master01    Ready,SchedulingDisabled   master   38h    v1.15.3   10.12.0.51    <none>        Ubuntu 18.04.3 LTS   4.15.0-62-generic   docker://18.9.9
node01   Ready                      node     38h    v1.15.3   10.12.0.62    <none>        Ubuntu 18.04.3 LTS   4.15.0-62-generic   docker://18.9.9

1 个答案:

答案 0 :(得分:0)

如前所述,您正在使用Taints
Taints: node-role.kubernetes.io/master:NoSchedule
不允许将Pod分配给该节点。但是,您使用的是一种特殊情况:

  

带有运算符Exists的空键会匹配所有键,值和效果   意思是   这会容忍一切

tolerations:
- operator: "Exists"
  

空白效果会与所有带有键的效果匹配。

tolerations:
- key: "key"
  operator: "Exists"

我唯一想到的就是使用AffinityNode isolation或仅使用Node Name