如何完整删除rancher中已接入的rancher集群并重新导入

前提:如果手动删除kubectl delete all --all --namespace=<namespace>删除不了的情况下可以使用此方案

一:查找rancher接入集群的所有namespace

接入rancher的k8s集群namespace都是以cattle命名的

复制代码
root@A800-gpu-node01:~# kubectl get namespaces | grep cattle
cattle-fleet-system                    Active        152m
cattle-impersonation-system            Active        164m
cattle-system                          Terminating   170m

namespace处于Terminating状态通过手动删除kubectl delete namespace cattle-fleet-system是无法删除的,通常是由于finalizers卡住导致的,需要修改yaml文件去解决无法删除的问题

二:修改finalizers的yaml文件内容删除finalizers部分配置

复制代码
NAMESPACE=cattle-fleet-system

kubectl get namespace $NAMESPACE -o json > ns.json

# 手动编辑 ns.json 文件,删除 "spec.finalizers" 的数组部分。

三:替换修养完的finalizers的yaml文件内容并应用生效

复制代码
kubectl replace --raw "/api/v1/namespaces/$NAMESPACE/finalize" -f ./ns.json

四:查看刚才Terminating的namespace是否删除成功

复制代码
oot@A800-gpu-node01:~# kubectl get namespaces | grep cattle
cattle-impersonation-system            Terminating   176m
cattle-system                          Terminating   3h1m

可以看到这次删除成功了,其他的资源删除方法一致

五:为了确保所有可能的资源都已删除,可以尝试删除特定资源类型:

复制代码
for ns in cattle-fleet-system cattle-impersonation-system cattle-system; do
  kubectl delete all --all -n $ns
  kubectl delete pvc --all -n $ns
  kubectl delete configmap --all -n $ns
  kubectl delete secret --all -n $ns
  kubectl delete ingress --all -n $ns
  kubectl delete role --all -n $ns
  kubectl delete rolebinding --all -n $ns
done

六:如果还有什么附带的资源没有删除干净,可以用这个命令强制删除

复制代码
对于无法通过标准方式删除的资源,使用 --grace-period=0 --force 强制删除:

kubectl delete pod <pod-name> -n <namespace-name> --grace-period=0 --force

七:重新导入k8s集群

先查看node节点kubelet配置中的USER_ACCOUNT,默认是default-auth

复制代码
ps -ef| grep kubelet

查看文件里边的默认用户是什么

八:添加权限用户

复制代码
 kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user default-auth

如果已有这一步可以忽略

九:通过yaml配置部署集群

复制代码
kubectl apply -f https://10.10.2.100:8443/v3/import/gvs9zvjhgjhvgxhcnqqngfj7sq7hk49g77pxlwtvxcjrfczgmqtnnv_c-m-cr9j4xcs.yaml

也可以在浏览器访问yaml的文件路径,拷贝文件内容到记事本里边,配置本地已有的镜像

然后在要接入的k8s集群的matserk节点kubectl create -f *.yaml去创建rancher的接入配置

十:如果新建的时候报错这些如何解决

(1)详细报错信息

强制删除某个名称空间后,再创建提示报错如下:

Error from server (InternalError): Internal error occurred: failed calling webhook "rancher.cattle.io.namespaces.create-non-kubesystem": failed to call webhook: Post "https://rancher-webhook.cattle-system.svc:443/v1/webhook/validation/namespaces?timeout=10s": service "rancher-webhook" not found

(2)解决方案

root@k8s-master rancher\]# kubectl get ValidatingWebhookConfiguration ![](https://i-blog.csdnimg.cn/direct/99dae408278547a98c6f08ee654427ca.png) \[root@k8s-master rancher\]# kubectl delete ValidatingWebhookConfiguration rancher.cattle.io ![](https://i-blog.csdnimg.cn/direct/7ac0bc5765744ce1b671d13ec5450ae2.png) 然后重新新建namespace ![](https://i-blog.csdnimg.cn/direct/056aa0a505314ab4b8bd3bafa78b3d13.png)

相关推荐
eEKI DAND1 天前
对Docker部署的MySQL中的数据进行备份恢复
mysql·docker·容器
longerxin20202 天前
kubeasz 快速指南:一键部署 Kubernetes-k8s 测试环境
云原生·容器·kubernetes
米高梅狮子2 天前
03.Kubernetes自动化部署和namespace、pod
容器·kubernetes·自动化
Sirius Wu2 天前
Docker 镜像的构建、打包、变更、再次打包全流程
运维·docker·容器
Zhu7582 天前
【软件部署】docker环境部署domino
运维·docker·容器
努力的搬砖人.2 天前
配置 Docker 镜像加速器
运维·docker·容器
江湖有缘2 天前
实时监控所有端口,Docker 部署 WatchYourPorts 保姆级教程
运维·docker·容器
pupudawang2 天前
docker desktop安装redis
redis·docker·容器
赴前尘2 天前
S3 命令行工具 Docker 容器运行
运维·docker·容器
米高梅狮子2 天前
04.yaml和Kubernetes Pod精讲
云原生·容器·kubernetes