05. Kubernetes - Kubeadm 节点 / Token 管理

删除节点

有些时候某些机器出现问题可能需要将其下掉,或者在初始化节点的时候信息初始化的有问题需要重新加入,这时候就涉及到删除节点的问题。

具体删除办法如下,Master 节点和 Worker 节点都一样:

# 先将节点标记为不可调度的维护模式
kubectl drain master-03 --delete-local-data --ignore-daemonsets --force

查看标记效果:

image

如果标记标记节点写错了可以恢复调度:

kubectl uncordon master-03

从集群中删除标记节点:

# 删除节点
kubectl delete nodes master-03

清空删除节点的数据:

# 重置节点
kubeadm reset -f

# 清除数据
ipvsadm --clear
rm -rf ~/.kube
rm -rf /var/lib/etcd
rm -rf /etc/kubernetes

# 关闭 kubelet
systemctl stop kubelet

加集群 Token 过期 / 忘记

在集群初始化的时候有生成加入集群的命令,但是这个命令是有有效期的。如果过期或者忘记就需要重新生成。

查看现有的 Token:

kubeadm token list

如果列出的 Token 都过期了,就需要重新生成 Token:

kubeadm token create

此时查看 Token:

image

这样创建的 Token 有效期为 24 小时。


有了 Token 还不够,Worker 节点加入命令中还需要 --discovery-token-ca-cert-hash CA 证书 Hash 值:

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

此时就可以生成 Woker 节点加入集群的命令:

kubeadm join 192.168.200.100:16443 --token Token地址 --discovery-token-ca-cert-hash sha256:生成的Hash值

当然这样分两次生成比较麻烦,可以在创建 Token 的时候就直接生成整个 Worker 加入集群命令:

kubeadm token create --print-join-command

如图所示:

image


对于 Master 节点加入集群,除了 Worker 节点加入集群的参数,还需要 --certificate-key 新生成的证书 Key:

kubeadm init --config /ezops/kubeadm/kubeadm-config-new.yaml phase upload-certs --upload-certs

此时还会用到初始化集群时候的配置文件,如图所示:

image

此时将命令拼接一下即可:

kubeadm join 192.168.200.100:16443 --token Token地址 --discovery-token-ca-cert-hash sha256:生成的Hash值 --control-plane --certificate-key 生成的Key

对于全新的 Master 节点,使用上面命令加入集群是没问题的,但是如果那个节点是前面踢掉的,就会有问题。

踢掉的 Master 节点加入集群

踢掉的 Master 节点加入集群会出现报错:

[control-plane] Creating static Pod manifest for "kube-scheduler"
[check-etcd] Checking that the etcd cluster is healthy
error execution phase check-etcd: etcd cluster is not healthy: failed to dial endpoint https://192.168.200.103:2379 with maintenance client: context deadline exceeded
To see the stack trace of this error execute with --v=5 or higher

原因在于集群的 ETCD 中还有存储它的相关信息,需要先清理掉。

# 登录集群的任意 ETCD Pod
kubectl exec -it etcd-master-01 sh -n kube-system

# Pod 中设置登录 ETCD 的命令
export ETCDCTL_API=3
alias etcdctl='etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key'

# 查看集群节点列表
etcdctl member list

# 删除节点
etcdctl member remove 50d272e8d4c41a8e

如图所示:

image

此时再次清空新的 Master 节点数据,然后加入 Mater 节点则没问题了。

kubeadm reset -f

# 清除数据
ipvsadm --clear
rm -rf ~/.kube
rm -rf /var/lib/etcd
rm -rf /etc/kubernetes

# 关闭 kubelet
systemctl stop kubelet
posted @ 2022-10-11 11:30  不知名换皮工程师  阅读(418)  评论(0编辑  收藏  举报