K8S 重置节点

场景:添加 K8S 节点时,出于一些原因(如未设置hostname),需要重置节点的连接

背景:K8S 没有一键重置和删除节点命令

实现:在重置节点过程中,我们需要 重置 kubeadm、停止 kubelet、删除 kubelet 配置、删除连接网络、删除 kubeconfig、重启 docker、重启 kubelet

kubeadm reset

systemctl stop kubelet
systemctl stop docker

rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/

ip link set cni0 down && ip link set flannel.1 down 
ip link delete cni0 && ip link delete flannel.1

rm -rf $HOME/.kube/config
iptables -F

systemctl restart docker
systemctl restart kubelet

重置后,重新获取 master 的 token

kubeadm token create --print-join-command  --ttl=0

节点重连

kubeadm join 192.168.180.30:6443 --token qzog84.xdqr3jah7rnuq6y6 --discovery-token-ca-cert-hash sha256:b2028231f9a2bad5d616a5b138a92f388462480b62e2d0dfa63b08bc80615ee9

全新节点添加可以参考:k8s 新增节点

在 Kubernetes 集群管理中,`kubeadm reset` 是一个用于清理和重置节点状态的重要命令。它可以帮助将节点恢复到未加入集群之前的状态,从而为重新初始化或重新加入集群做好准备。以下是详细的使用方法及其注意事项。 ### 重置 Kubernetes 集群节点 #### 1. 重置 Master 节点 在执行 `kubeadm reset` 之前,建议先将节点标记为不可调度并驱逐所有工作负载,以避免影响其他节点。 ```bash kubectl cordon <master-node-name> kubectl drain <master-node-name> kubectl delete node <master-node-name> ``` 随后,执行 `kubeadm reset` 命令以清除节点上的 Kubernetes 配置和数据: ```bash kubeadm reset ``` 此外,为了确保完全清除旧集群的配置信息,需要手动删除以下目录: ```bash rm -rf $HOME/.kube rm -rf /etc/kubernetes /var/lib/kubelet /var/lib/containerd /var/lib/cni /etc/cni/net.d /var/lib/etcd ``` 如果使用了特定的 CRI(如 `cri-dockerd`),则需要指定套接字路径: ```bash kubeadm reset --cri-socket unix:///run/cri-dockerd.sock ``` 对于使用 Flannel 或 Calico 等网络插件的集群,还需要删除相关网络配置: ```bash # Flannel rm -rf /run/flannel # Calico rm -rf /var/run/calico /var/lib/calico ``` 最后,建议重启节点以确保所有更改生效: ```bash reboot ``` #### 2. 重置 Worker 节点 Worker 节点重置过程与 Master 节点类似,但不需要执行 `kubectl cordon`、`kubectl drain` 和 `kubectl delete node`,因为这些操作通常是在 Master 节点上完成的。 ```bash kubeadm reset rm -rf $HOME/.kube rm -rf /etc/kubernetes /var/lib/kubelet /var/lib/containerd /var/lib/cni /etc/cni/net.d ``` 如果使用了特定的 CRI,则同样需要指定套接字路径: ```bash kubeadm reset --cri-socket unix:///run/cri-dockerd.sock ``` 重置完成后,可以重新执行 `kubeadm join` 命令将节点加入集群: ```bash kubeadm join <control-plane-endpoint>:<port> --token <token> --discovery-token-ca-cert-hash <hash> ``` #### 3. 重新初始化集群 在 Master 节点重置后,可以使用 `kubeadm init` 重新初始化集群。以下是一个典型的初始化命令示例: ```bash kubeadm init \ --apiserver-advertise-address=<master-ip> \ --control-plane-endpoint=<cluster-endpoint> \ --image-repository <registry-url> \ --kubernetes-version <version> \ --service-cidr=<service-cidr> \ --pod-network-cidr=<pod-cidr> ``` 例如: ```bash kubeadm init \ --apiserver-advertise-address=10.50.10.187 \ --control-plane-endpoint=cluster-endpoint \ --image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \ --kubernetes-version v1.20.9 \ --service-cidr=10.96.0.0/16 \ --pod-network-cidr=192.168.0.0/16 ``` 初始化完成后,按照提示配置 `kubectl` 并安装网络插件以确保集群正常运行。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值