如何完整删除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

[root@k8s-master rancher]# kubectl delete ValidatingWebhookConfiguration rancher.cattle.io

然后重新新建namespace

相关推荐
青云交1 小时前
大数据新视界 --大数据大厂之Kubernetes与大数据:容器化部署的最佳实践
数据库·kubernetes·容器编排·资源管理·大数据处理·扩展性、故障恢复·存储持久化·监控、日志管理、性能提升
苏少朋1 小时前
Docker安装 ▎Docker详细讲解 ▎数据卷挂载 ▎Nginx安装理解
linux·nginx·docker·容器
晚枫20001 小时前
kafka发送事件的几种方式
spring boot·分布式·docker·容器·kafka·intellij-idea·linq
StevenZeng学堂2 小时前
【Kubernetes笔记】为什么DNS解析会超时?
网络协议·docker·云原生·kubernetes
云计算练习生4 小时前
深入剖析Docker容器安全:挑战与应对策略
安全·docker·容器
wellshake6 小时前
在 Docker 中部署无头 Chrome:在 Browserless 中运行
chrome·docker·容器
大白菜和MySQL16 小时前
rockylinux9.4单master节点k8s1.28集群部署
云原生·容器·kubernetes
玖石书16 小时前
Docker 容器网络技术
运维·docker·容器
向往风的男子16 小时前
【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(三十)
学习·容器·kubernetes
爱吃番茄的小狐狸1 天前
Docker镜像下载-使用github action- 解决无法下载docker镜像的问题
docker·容器·github