节点管理
- 删除节点
#设置node-1节点不参与pod的调度
[root@master ~]# kubectl cordon node-1
node/node-1 cordoned
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 21d v1.11.0
node-1 Ready,SchedulingDisabled <none> 12h v1.11.0
node-2 Ready <none> 21d v1.11.0
#将要删除的node(node-1)上的pod平滑的转移到其他node上
[root@master ~]# kubectl drain node-1 --delete-local-data --force --ignore-daemonsets
node/node-1 cordoned
WARNING: Ignoring DaemonSet-managed pods: kube-flannel-ds-amd64-6nt6g, kube-proxy-vtxzz
pod/nginx-64f497f8fd-hpfhf evicted
#删除节点
[root@master ~]# kubectl delete nodes node-1
node "node-1" deleted
增加节点
#token值
[root@master ~]# kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
[root@master ~]# kubeadm token create
I0216 05:18:06.222921 130293 feature_gate.go:230] feature gates: &{map[]}
f5m6dt.9v9481qpivtbbyu0
[root@master ~]# kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
f5m6dt.9v9481qpivtbbyu0 23h 2019-02-17T05:18:06+08:00 authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
- node节点添加到集群
[root@node-1 ~]# kubeadm join 192.168.233.101:6443 --token f5m6dt.9v9481qpivtbbyu0 --discovery-token-ca-cert-hash sha256:67a815b63f84f9c906cd734a2cc1e2fb000d20dede6d0f089b1f7bfb0fad1706
步骤
- 首先查看当前集群所有节点状态,可以看到都处于ready状态;
- 查看多副本分配于不通节点的pod
- 使用cordon命令将准备操作的节点标记为不可调度;
- 再使用kubectl get nodes查看节点状态,发现节点虽然还处于Ready状态,但是同时还被禁能了调度,这意味着新的pod将不会被调度到该节点上。
- 再查看pod状态,没有任何变化
- 执行drain命令,将运行在该上运行的pod平滑的赶到其他节点上;
- 再查看pod的状态,该上的副本已经被迁移到其他节点上;这时候就可以对该进行一些节点维护的操作,如升级内核,升级Docker等;
- 节点维护完后,使用uncordon命令解锁d-node1,使其重新变得可调度;
- 检查节点状态,发现节点重新变回Ready状态。