|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
从节点中移除Kubernetes组件
本节描述如何将节点从Rancher启动的Kubernetes集群中断开连接,并从节点中移除所有Kubernetes组件。此过程允许您将节点用于其他目的。
当您使用Rancher在基础设施提供商的新节点上安装Kubernetes时,会创建资源(容器/虚拟网络接口)和配置项(证书/配置文件)。
当从您的Rancher启动的Kubernetes集群中移除节点时(前提是它们处于`Active`状态),这些资源会自动清理,所需的唯一操作是重启节点。当节点变得不可达且无法使用自动清理过程时,我们描述了在节点可以再次添加到集群之前需要执行的步骤。
移除哪些内容?
在清理使用Rancher配置的节点时,根据您要移除的集群节点类型,以下组件将被删除。
| 已移除组件 | 由基础设施提供商托管的节点 | 自定义节点 | 托管集群 | 注册的节点 |
|---|---|---|---|---|
Rancher部署名称空间(默认是`cattle-system`) |
✓ |
✓ |
✓ |
✓ |
|
✓ |
✓ |
✓ |
✓ |
标签、注释和终结器 |
✓ |
✓ |
✓ |
✓ |
Rancher 部署 |
✓ |
✓ |
✓ |
|
机器、集群、项目和用户自定义资源定义(CRD) |
✓ |
✓ |
✓ |
|
在`management.cattle.io` API组下创建的所有资源 |
✓ |
✓ |
✓ |
|
Rancher v2.x创建的所有CRD |
✓ |
✓ |
✓ |
通过Rancher UI从集群中移除节点
当节点处于`Active`状态时,从集群中移除节点将触发清理节点的过程。请在自动清理过程完成后重启节点,以确保任何非持久性数据被正确移除。
重启节点:
# using reboot $ sudo reboot # using shutdown $ sudo shutdown -r now
手动从集群中移除Rancher组件
当节点无法访问并从集群中移除时,无法触发自动清理过程,因为节点无法访问。请按照以下步骤手动移除Rancher组件。
|
下面列出的命令将从节点中移除数据。在执行任何命令之前,请确保您已创建要保留的文件的备份,因为数据将会丢失。 |
从注册集群中移除Rancher组件
对于注册集群,移除Rancher的过程稍有不同。您可以选择在Rancher UI中简单地删除集群,或者运行一个脚本来从节点中移除Rancher组件。这两种选项都会进行相同的删除。
在注册集群与Rancher断开连接后,集群的工作负载将不受影响,您可以使用与注册集群到Rancher之前相同的方法访问集群。
-
通过UI / API
-
通过脚本
|
此过程将从您的集群中去除数据。在执行命令之前,请确保您已创建要保留的文件的备份,因为数据将会丢失。 |
在您使用Rancher UI(或API)开始移除注册集群后,将发生以下事件。
-
Rancher创建一个`serviceAccount`,用于从集群中去除Rancher组件。该账户被分配了 clusterRole和 clusterRoleBinding权限,这些权限是去除Rancher组件所必需的。
-
使用`serviceAccount`,Rancher调度并运行一个 作业,清理集群中的Rancher组件。该作业还引用了`serviceAccount`及其角色作为依赖项,因此在完成之前会删除它们。
-
Rancher从集群中去除。然而,集群仍然存在,运行原生版本的Kubernetes。
*结果:*在被移除的内容中列出的所有注册集群组件都被删除。
与其使用Rancher UI清理注册集群节点,不如运行一个脚本。
|
先决条件
安装 kubectl。 |
-
打开一个网页浏览器,导航到 GitHub,并下载`user-cluster.sh`。
-
通过在与`user-cluster.sh`相同的目录中运行以下命令,使脚本可执行:
chmod +x user-cluster.sh
-
*仅限隔离环境:*打开`user-cluster.sh`并用`user-cluster.yml`中的URL替换`yaml_url`。
如果您没有隔离环境,请跳过此步骤。
-
从同一目录中运行脚本,并提供`rancher/rancher-agent`镜像版本,该版本应与用于管理集群的Rancher版本相同。(
<RANCHER_VERSION>):添加`-dry-run`标志以预览脚本的结果而不进行更改。
./user-cluster.sh rancher/rancher-agent:<RANCHER_VERSION>
*结果:*脚本正在运行。在被移除的内容中列出的所有注册集群组件都被删除。
清理节点
-
RKE2
-
K3s
|
有关清理未通过Rancher部署的RKE2集群中节点的说明,请参见https://documentation.suse.com/cloudnative/rke2/latest/en/install/uninstall.html[官方RKE2文档]中关于卸载集群的说明。 |
您需要从Rancher提供的RKE2节点中移除以下组件:
-
rancher-system-agent,它连接到Rancher并安装和管理RKE2。
-
RKE2 本身。
去除 rancher-system-agent
要去除 rancher-system-agent,请运行 system-agent-uninstall.sh 脚本:
curl https://raw.githubusercontent.com/rancher/system-agent/main/system-agent-uninstall.sh > system-agent-uninstall.sh
sudo sh system-agent-uninstall.sh
去除 RKE2
要去除 RKE2 安装,请运行节点上已存在的 rke2-uninstall 脚本:
sudo rke2-uninstall.sh
您需要从 Rancher 提供的 K3s 节点中去除以下组件:
-
rancher-system-agent,它连接到 Rancher 并安装和管理 K3s。
-
K3s 本身。
去除 rancher-system-agent
要去除 rancher-system-agent,请运行 system-agent-uninstall.sh 脚本:
curl https://raw.githubusercontent.com/rancher/system-agent/main/system-agent-uninstall.sh > system-agent-uninstall.sh
sudo sh system-agent-uninstall.sh
去除 K3s
要去除 K3s 安装,请运行节点上已存在的 k3s-uninstall 脚本:
sudo k3s-uninstall.sh
目录和文件
以下目录在将节点添加到集群时使用,应予以去除。您可以使用 rm -rf /directory_name 去除目录。
|
根据您分配给节点的角色,某些目录可能在节点上存在或不存在。 |
-
RKE2
-
K3s
| 目录 |
|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
清理目录:
rm -rf /etc/ceph \
/etc/cni \
/etc/kubernetes \
/etc/rancher \
/opt/cni \
/run/calico \
/run/flannel \
/run/secrets/kubernetes.io \
/var/lib/calico \
/var/lib/cni \
/var/lib/etcd \
/var/lib/kubelet \
/var/lib/rancher \
/var/lib/weave \
/var/log/containers \
/var/log/pods \
/var/run/calico
| 目录 |
|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
清理目录:
rm -rf /etc/ceph \
/etc/cni \
/etc/kubernetes \
/etc/rancher \
/etc/systemd/system/k3s \
/opt/cni \
/run/calico \
/run/flannel \
/run/secrets/kubernetes.io \
/usr/local/bin/k3s \
/var/lib/calico \
/var/lib/cni \
/var/lib/etcd \
/var/lib/kubelet \
/var/lib/rancher \
/var/lib/weave \
/var/log/containers \
/var/log/pods \
/var/run/calico
网络接口和 Iptables
剩下的两个被更改/配置的组件是(虚拟)网络接口和 iptables 规则。这两者对节点是非持久的,这意味着它们将在节点重启后被清除。要去除这些组件,建议重启。
重启节点:
# using reboot $ sudo reboot # using shutdown $ sudo shutdown -r now
如果您想了解更多关于(虚拟)网络接口或 iptables 规则的信息,请参见下面的具体主题。
网络接口
|
根据为集群配置的网络提供商,某些接口可能在节点上存在或不存在。 |
| 接口 |
|---|
|
|
|
|
|
列出所有网络接口:
# Using ip ip address show # Using ifconfig ifconfig -a
去除一个网络接口:
ip link delete interface_name
Iptables
|
根据为集群配置的网络提供商,某些链可能会或不会出现在节点上。 |
Iptables 规则用于路由来自和去往容器的流量。创建的规则不是持久的,因此重启节点将恢复 iptables 到其原始状态。
| 链 |
|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
列出所有 iptables 规则:
iptables -L -t nat iptables -L -t mangle iptables -L