跳至主要内容

從節點移除 Kubernetes 元件

本節說明如何從 Rancher 啟動的 Kubernetes 叢集中斷開節點,並從節點中移除所有 Kubernetes 元件。此過程可讓您將該節點用於其他用途。

當您使用 Rancher 在基礎設施提供者的新節點上安裝 Kubernetes 時,會建立資源(容器/虛擬網路介面)和組態項目(憑證/組態檔案)。

從 Rancher 啟動的 Kubernetes 叢集中移除節點時(前提是它們處於 Active 狀態),這些資源會自動清理,唯一需要執行的操作就是重新啟動節點。當節點變得無法存取且無法使用自動清理過程時,我們會說明在將節點再次新增到叢集之前需要執行的步驟。

會移除什麼?​

清理使用 Rancher 佈建的節點時,會根據您要移除的叢集節點類型刪除以下元件。

移除的元件基礎設施提供者託管的節點自訂節點託管叢集已註冊的節點
Rancher 部署命名空間(預設為 cattle-system)✓✓✓✓
由 Rancher 標記的 serviceAccount、clusterRoles 和 clusterRoleBindings✓✓✓✓
標籤、註釋和 Finalizers✓✓✓✓
Rancher 部署✓✓✓
機器、叢集、專案和使用者自訂資源定義(CRDs)✓✓✓
在 management.cattle.io API 群組下建立的所有資源✓✓✓
Rancher v2.x 建立的所有 CRDs✓✓✓

透過 Rancher UI 從叢集移除節點​

當節點處於 Active 狀態時,從叢集中移除節點將會觸發清理節點的過程。請在自動清理過程完成後重新啟動節點,以確保正確移除所有非持久性資料。

重新啟動節點:

# using reboot
$ sudo reboot

# using shutdown
$ sudo shutdown -r now

手動從叢集移除 Rancher 元件​

當節點無法存取並從叢集中移除時,由於節點無法存取,因此無法觸發自動清理過程。請按照以下步驟手動移除 Rancher 元件。

危險

以下列出的指令將會從節點中移除資料。在執行任何指令之前,請確保您已備份要保留的檔案,因為資料將會遺失。

從已註冊的叢集移除 Rancher 元件​

對於已註冊的叢集,移除 Rancher 的過程略有不同。您可以選擇直接在 Rancher UI 中刪除叢集,或執行從節點移除 Rancher 元件的腳本。兩個選項執行的刪除操作相同。

將已註冊的叢集從 Rancher 分離後,叢集的工作負載不會受到影響,您可以使用叢集註冊到 Rancher 之前所使用的相同方法存取該叢集。

危險

此過程將會從您的叢集中移除資料。在執行指令之前,請確保您已備份要保留的檔案,因為資料將會遺失。

使用 Rancher UI(或 API)啟動移除已註冊叢集後,會發生以下事件。

  1. Rancher 建立一個 serviceAccount,用於從叢集中移除 Rancher 元件。此帳戶被授予 clusterRole 和 clusterRoleBinding 權限,這是移除 Rancher 元件所需的權限。

  2. 使用 serviceAccount,Rancher 會排程並執行一個作業,從叢集中清理 Rancher 元件。此作業還會引用 serviceAccount 及其角色作為相依性,因此作業在完成之前會刪除它們。

  3. Rancher 從叢集中移除。但是,叢集會持續存在,執行原生版本的 Kubernetes。

結果:會移除什麼?中列出的已註冊叢集的所有元件都會被刪除。

清理節點​

備註

有關清理非由 Rancher 部署的 RKE2 叢集中的節點的說明,請參閱官方 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

目錄和檔案​

將節點新增到叢集時會使用以下目錄,應予以移除。您可以使用 rm -rf /directory_name 移除目錄。

important

根據您分配給節點的角色,某些目錄可能存在或不存在於節點上。

Directories
/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 \
/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

網路介面和 Iptables​

剩下兩個被變更/設定的元件是(虛擬)網路介面和 iptables 規則。兩者都不會持久化到節點上,這意味著在重新啟動節點後它們將會被清除。建議重新啟動以移除這些元件。

重新啟動節點:

# using reboot
$ sudo reboot

# using shutdown
$ sudo shutdown -r now

如果您想了解更多有關(虛擬)網路介面或 iptables 規則的資訊,請參閱下面的具體主題。

網路介面​

備註

根據節點所屬叢集設定的網路提供者,某些介面可能存在或不存在於節點上。

Interfaces
flannel.1
cni0
tunl0
caliXXXXXXXXXXX (random interface names)
vethXXXXXXXX (random interface names)

列出所有介面:

# 使用 ip
ip address show

# 使用 ifconfig
ifconfig -a

移除介面:

ip link delete interface_name

Iptables​

備註

根據節點所屬叢集設定的網路提供者,某些鏈可能存在或不存在於節點上。

Iptables 規則用於路由進出容器的流量。建立的規則不會持久化,因此重新啟動節點將會將 iptables 還原到其原始狀態。

Chains
cali-failsafe-in
cali-failsafe-out
cali-fip-dnat
cali-fip-snat
cali-from-hep-forward
cali-from-host-endpoint
cali-from-wl-dispatch
cali-fw-caliXXXXXXXXXXX (random chain names)
cali-nat-outgoing
cali-pri-kns.NAMESPACE (chain per namespace)
cali-pro-kns.NAMESPACE (chain per namespace)
cali-to-hep-forward
cali-to-host-endpoint
cali-to-wl-dispatch
cali-tw-caliXXXXXXXXXXX (random chain names)
cali-wl-to-host
KUBE-EXTERNAL-SERVICES
KUBE-FIREWALL
KUBE-MARK-DROP
KUBE-MARK-MASQ
KUBE-NODEPORTS
KUBE-SEP-XXXXXXXXXXXXXXXX (random chain names)
KUBE-SERVICES
KUBE-SVC-XXXXXXXXXXXXXXXX (random chain names)

列出所有 iptables 規則:

iptables -L -t nat
iptables -L -t mangle
iptables -L