master加入node节点

介绍

        之前一直没有做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运行在指定的节点上。

坚持原创技术分享,您的支持将鼓励我继续创作!
0%