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

相关推荐
Bright16685 小时前
centos9安装k8s集群
云原生·容器·kubernetes
!!!5256 小时前
华为云镜像加速器
docker·容器·华为云
xidianjiapei0017 小时前
Kubernetes的Ingress 资源是什么?
云原生·容器·kubernetes
sszdzq9 小时前
Docker
运维·docker·容器
dmy9 小时前
docker 快速构建开发环境
后端·docker·容器
土豆沒加10 小时前
K8S的Dashboard登录及验证
云原生·容器·kubernetes
终端行者12 小时前
kubernetes1.28部署mysql5.7主从同步,使用Nfs制作持久卷存储,适用于centos7/9操作系统,
数据库·容器·kubernetes
伪装成塔的小兵17 小时前
Windows使用docker部署fastgpt出现的一些问题
windows·docker·容器·oneapi·fastgpt
寂夜了无痕17 小时前
k8s容器运行时环境选型指南
云原生·kubernetes·k8s运行时环境选择
转身後 默落20 小时前
11.Docker 之分布式仓库 Harbor
分布式·docker·容器