Kubernetes集群缩容:node隔离与恢复
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