bf90088fc1b38b7.gif

cordon

kubectl cordon db #将db节点设置为不可调度模式
kubectl uncordon db #执行完维护后,将节点重新加入调度

[root@node01 ~]# kubectl cordon db
node/db cordoned
[root@node01 ~]# kubectl get nodes
NAME     STATUS                     ROLES    AGE   VERSION
db       Ready,SchedulingDisabled   <none>   37m   v1.13.4
node01   Ready                      master   38d   v1.13.3
node02   Ready                      master   38d   v1.13.3
node03   Ready                      master   38d   v1.13.3
[root@node01 ~]# kubectl uncordon db
node/db uncordoned
[root@node01 ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
db       Ready    <none>   39m   v1.13.4
node01   Ready    master   38d   v1.13.3
node02   Ready    master   38d   v1.13.3
node03   Ready    master   38d   v1.13.3

通过配置文件实现

创建配置文件unschedule_node.yaml,内容如下:

apiVersion: v1
kind: Node
metadata:
  name: db
  labels:
    namne: db
spec:
  unschedulable: true

然后执行该配置文件,即可将指定的node脱离调度范围:
kubectl replace -f unschedule_node.yaml
通过命令行的方式实现
kubectl patch node db -p '{"spec":"{"unschedulable":"true"}"}'
恢复:无论上面哪一种方法,其实都是将unsechdulable的值改为true,实现 了隔离,同理,恢复时,只需要将unschedulable的值改为false即可。

容器驱离

kubectl drain db     #将当前运行在db节点上的容器驱离

删除node节点,不再加入了:

kubectl delete node db

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code