阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

温柔一刀,优雅且彻底地卸载 Rancher HA

  • 2021-07-30
  • 本文字数:2047 字

    阅读完需:约 7 分钟

温柔一刀,优雅且彻底地卸载Rancher HA

Rancher 从 v2.5 开始,支持将 Rancher HA 安装在任何经过 CNCF 认证的标准 K8s 发行版上,这个集群可以使用上游 Kubernetes,也可以使用 Rancher 的 Kubernetes 发行版之一,也可以是来自 Amazon EKS 等提供商的托管 Kubernetes 集群。无论安装到哪种集群上,Rancher 都推荐使用一个独立的 K8S/K3S 集群作为 Rancher HA 的 Local 集群,这样 Rancher HA 不会和业务集群相互影响。


如果在独立的 Local 集群上卸载 Rancher HA,一般的做法是将 Local 集群删掉,从而达到卸载 Rancher HA 的目的,这样做的好处是比较简单、数据清理得比较彻底。


但有些用户将 Rancher HA 安装到了某些业务或生产集群上,这样的话,就无法通过移除 Local 集群去卸载 Rancher HA。我们需要找到一个办法可以在不影响 Local 集群运行的情况下卸载掉 Rancher HA。


Rancher 提供了一个卸载 Rancher HA 的工具:system-tools。https://rancher.com/docs/rancher/v2.x/en/system-tools/。我们可以借助 system-tools 来将 Rancher HA 生成的 namespace 和其他资源移除。执行 remove 命令会移除以下资源:


  • Rancher 部署的命名空间,默认名称是 cattle-system。

  • Rancher 通过 cattle.io/creator:norman 标签标记的 serviceAccount、 clusterRoles 和 clusterRoleBindings。使用 Rancher v2.1.0 或更新版本创建的所有及资源都会被打上 cattle.io/creator:norman 的标签。

  • Labels、annotations、finalizers。

  • Rancher Deployment。

  • 集群、项目和用户相关的 CRD。

  • management.cattle.io API Group 内创建的所有资源。

  • 使用 Rancher v2.x 创建的所有 CRD。


但 system-tools 年久失修(最后一次更新于 2019 年 4 月 11 日),针对后续 Rancher 版本新增的一些 namespace 等资源并没有被移除,所以导致我们没有一个方法可以完全在 Local 集群上卸载掉 Rancher HA。

卸载 Rancher HA

为了在 Local 集群上彻底卸载掉 Rancher HA,我们可以先筛选出哪些 namesaces 是由 Rancher HA 创建的,然后再通过 system-tools remove --kubeconfig <$KUBECONFIG> --namespace <NAMESPACE> 来删除对应的 namespace 和相关资源。经过测试发现,通过 system-tools 移除 namespace 后,有些 namespace 的状态始终为 Terminating,还需要手动的移除掉.spec.finalizers 和.metadata.finalizers,然后才能彻底的将 namespace 删除。


为此,笔者准备了一个 shell 脚本来完成以上的删除流程:


注意:

  • 本脚本只基于 Rancher v2.5.8 上进行测试,理论上 v2.5.x 系列版本均支持。其他版本(例如:2.4.x)需要修改步骤 4 中对应的 NS 参数来设置要删除的 namespace

  • 本脚本在 Local 集群为 k3s 和 rke 集群上做过验证,如 Local 集群为其他 K8s 集群,需要确认步骤 4 中对应的 NS 参数来设置要删除的 namespace

  • Rancher HA 会创建 c-、p-、user- 开头的 namespace,这些不需要用户关注,当通过 system-tools 移除 cattle-system 会自动将这些 namespace 移除


1.下载脚本

root@ip-172-31-22-79:~# wget https://raw.githubusercontent.com/kingsd041/some_script/master/remove-rancher-ha/remove_r_ha.sh
复制代码


2.在该主机上安装 kubectl、jq、system-tools,并且创建 kubeconfig 文件。


3.编辑脚本,设置 KUBE_CONFIG 目录


KUBE_CONFIG='/root/.kube/config'
复制代码


4.编辑脚本,确认 NS 变量设置的 namespace 是否为将要被删除的 namespace,避免误删 namespace。


NS="cattle-system|*fleet*|rancher-operator-system|cattle-global-nt|cattle-global-data"
复制代码


5.执行脚本,卸载 Rancher HA



root@ip-172-31-22-79:~# ./remove_r_ha.sh
cattle-systemcattle-global-datacattle-global-ntrancher-operator-systemfleet-clusters-systemfleet-localcluster-fleet-local-local-1a3d67d0a899fleet-systemfleet-defaultcluster-fleet-default-c-9zwzq-dd029f17f988Are you sure to remove the above namespace? [y/n] yINFO[0000] Removing Rancher management plane in namespace: [cattle-system]INFO[0000] Getting connection configurationINFO[0000] Removing Cattle deploymentINFO[0000] Removed Cattle deployment succuessfullyINFO[0000] Removing ClusterRoleBindings......
复制代码


大约 5 分钟,脚本执行完成。此时,可以通过 kubectl get ns 来确认 Rancher HA 是否被卸载:



root@ip-172-31-22-79:~# kubectl get nsNAME STATUS AGEkube-public Active 65mdefault Active 65mkube-node-lease Active 65mkube-system Active 65m
复制代码

后记

虽然 Rancher v2.5 开始可以将 Rancher HA 安装在任何经过 CNCF 认证的 K8s 集群上,但还是建议大家在生产环境上将 Rancher HA 安装在一个独立的 Local 集群上,这样可以避免 Rancher HA 和业务集群相互影响。如果你将 Rancher HA 安装到了业务 K8s 集群上,可以使用本文的方式去完美的卸载 Rancher HA,对原集群不会有任何影响。


本文转载自:RancherLabs(ID:RancherLabs)

原文链接:温柔一刀,优雅且彻底地卸载Rancher HA

2021-07-30 07:001798

评论

发布
暂无评论
发现更多内容

【信创】 JED on 鲲鹏(ARM) 调优步骤与成果 | 京东云技术团队

京东科技开发者

数据库 信创 arm 企业号10月PK榜

即时通讯音视频开发(二十):一文读懂视频的颜色模型转换和色域转换

JackJiang

网络编程 即时通讯 IM

记一次Redis Cluster Pipeline导致的死锁问题

vivo互联网技术

dubbo 死锁 redis cluster pipeline Arthas

Mac电脑屏幕分辨率修改 SwitchResX正式激活版

胖墩儿不胖y

Mac软件 屏幕分辨率工具 分辨率调整软件

突破边界与持续技术创新,Doris Summit Asia 2023 主论坛亮点解读

SelectDB

数据库 大数据 数据仓库 实时数仓 Apaache Doris

论Oracle兼容性,我们需要做什么

YashanDB

数据库 oracle 兼容性

技术分享| 二进制部署MySQL

anyRTC开发者

数据库 音视频 私有云 ​MySQL

【交付高质量,用户高增长】-用户增长质量保证方法论 | 京东云技术团队

京东科技开发者

质量管理 测试 测试 单元测试 质量保证 企业号10月PK榜

【数据安全】数据安全运维是什么意思?有什么意义?

行云管家

数据 信息安全 数据安全 等保 数据安全运维

一文带你简单了解一下堡垒机是干嘛的!

行云管家

网络安全 信息安全 等保 堡垒机 等级保护

免费名额限量发布!数划云邀请您参与明道云伙伴大会2023

数划云

MySQL数据库:为什么它是您的最佳选择?

小齐写代码

云上第一课开播在即!和明星学长一起走进云安全

科技热闻

产品经理的API文档阅读指南

Noah

产品经理 API接口文档

快速gps定位:AnyGo 免激活最新中文版

mac大玩家j

Mac 软件 定位软件 gps虚拟定位

搞流式计算,大厂也没有什么神话

字节跳动云原生计算

flink 云原生 流式计算

基于 P-Tuning v2 进行 ChatGLM2-6B 微调实践 | 京东云技术团队

京东科技开发者

人工智能’ ChatGLM2-6B 企业号10月PK榜

体验提升-一个“小技巧”彻底解决锦礼商品可见不可售 | 京东云技术团队

京东科技开发者

算法 过滤算法 企业号10月PK榜

体验用深信服XDR+GPT工作的一天!事关每一位安全运营人员

科技热闻

渲染软件大盘点!快来看看你适合哪款吧!

Finovy Cloud

渲染 渲染软件

GPT-4 即将超越拐点;5.5G 手机或明年上半年商用;AI 音乐或将成行业标配丨 RTE 开发者日报 Vol.65

声网

产品经理视角 | API接口知识小结

Noah

产品经理 API接口文档 API产品经理

【央企】全方位账户集中管理 资金可视、可管、可控

用友BIP

全球司库 领先实践

mac系统SecureCRT的使用教程

晴雯哥

软件项目管理、开发、配套支撑等全文档整理

金陵老街

mac系统SecureFX下载、安装及使用

晴雯哥

温柔一刀,优雅且彻底地卸载Rancher HA_架构_Rancher_InfoQ精选文章