新增节点

通过 kubeadm 初始化后,都会提供 node 加入的 token:
默认 token 的有效期为 24 小时,当过期之后,该 token 就不可用了。

1
2
3
4
5
6
# master 上重新生成新的 token
[root@k8s-master ~]# kubeadm token create --print-join-command
kubeadm join 192.168.81.57:6443 --token xv27mz.zx9qvxzr1n9ver8b --discovery-token-ca-cert-hash sha256:e79022dddd20ebaa3304fe62856393cb58a5b5b6e42e51333224e1841bbf49eb
[root@k8s-master ~]# kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
xv27mz.zx9qvxzr1n9ver8b 23h 2021-06-17T09:26:38+08:00 authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
1
2
# 新节点运行token
[root@k8s-node2 ~]# kubeadm join 192.168.81.57:6443 --token xv27mz.zx9qvxzr1n9ver8b --discovery-token-ca-cert-hash sha256:e79022dddd20ebaa3304fe62856393cb58a5b5b6e42e51333224e1841bbf49eb
1
2
3
4
5
6
7
8
9
10
11
12
# master 查看新节点的是否加入
[root@k8s-master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 70d v1.20.0
k8s-node1 Ready <none> 70d v1.20.0
k8s-node2 NotReady <none> 3s v1.20.0
[root@k8s-master ~]# systemctl restart kubelet
[root@k8s-master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 70d v1.20.0
k8s-node1 Ready <none> 70d v1.20.0
k8s-node2 Ready <none> 12s v1.20.0

node 节点重新加入集群操作【node 节点操作】

node 节点要重新加入集群,需要重置集群状态,命令:kubeadm reset,回车后输入 y 即可

1
kubeadm reset

重新加入集群

1
kubeadm join 192.168.81.57:6443 --token xv27mz.zx9qvxzr1n9ver8b     --discovery-token-ca-cert-hash sha256:e79022dddd20ebaa3304fe62856393cb58a5b5b6e42e51333224e1841bbf49eb

删除节点

k8s 集群 移除节点操作

  1. 确认需要移除的节点上面没有部署我们所需要的资源
1
kubectl get pod -A -o wide |grep -w "node名"
  1. 设置该节点为不可调度 (不分配新的资源到该节点上) (drain 命令已经会自动把 node 设置为不可调度,所以可以省略执行 cordon 命令)
1
kubectl cordon node
  1. 确认完成后,先排空节点上的 pod(每个节点上面都会运行一些系统自带的 pod) (daemonset 不会被排出节点)
1
kubectl drain node --ignore-daemonsets --force
  1. 排空 pod 之后,便可以删除节点了
1
kubectl delete node node名
1
2
rm /etc/cni/net.d/* -f