介绍
之前一直没有做k8s集群的时候一直没有master加入为node节点。在使用的时候遇到了很多坑,但是都还好,都能及时的解决。这里记录一下吧master加入node行列的好处。
这个问题是之前在部署istio的时候遇到的。整了大半个月最终搞定啦。master加入node节点以后解决了哪些问题。istio、metrics-server、heapster的问题都解决了。在部署metrics-server、heapster的时候不需要增加hostNetwork: true
参数。
master加入node
如果master加入node节点需要安装kubele、flanneld、docker、kube-proxy,与正常的node安装没有区别。
但是master成为node节点以后,我们又不想master部署pod来增加master节点的压力。所以需要吧master节点设置为SchedulingDisabled
。设置master节点为SchedulingDisabled
的命令是
1 | # kubectl patch node master-01 -p '{"spec":{"unschedulable":true}}' |
这样设置是将Node 脱离调度范围,但是运行在改node节点上pod不会自动的停止。需要手动停止改node上运行的pod。如果需要回复调度是将unschedulable
设置为false。执>行kubectl replace或者kubectl patch 命令就能恢复系统对改 Node 的调度。
1 | # kubectl patch node master-01 -p '{"spec":{"unschedulable":false}}' |
也可以使用kubectl的子命令cordon和uncordon也用于实现将Node进行隔离和恢复调度的操作。
使用kubectl cordon对某个Node进行隔离调度操作
1
# kubectl cordon master-01
恢复
1
# kubectl uncordon master-01
需要注意的是即使设置node为SchedulingDisabled
,系统还是会调度DaemonSet
类型的pod。如果flanneld是pod安装,这个一定要调度过来。否则网络不通。设置DaemonSet
类型的pod不调度在SchedulingDisabled
的node上,可以吧DaemonSet
设置一个nodeSelector
的标签。让这类型的pod运行在指定的节点上。