この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

ノードからKubernetesコンポーネントを削除する

このセクションでは、Rancherが起動したKubernetesクラスターからノードを切断し、そのノードからすべてのKubernetesコンポーネントを削除する方法について説明します。このプロセスにより、ノードを他の目的に使用できるようになります。

インフラストラクチャプロバイダーの新しいノードにKubernetesをインストールするためにRancherを使用すると、リソース(コンテナ/仮想ネットワークインタフェース)と設定項目(証明書/設定ファイル)が作成されます。

Rancherが起動したKubernetesクラスターからノードを削除する際(それらが`Active`の状態にある場合)、それらのリソースは自動的にクリーンアップされ、必要な唯一のアクションはノードを再起動することです。ノードが到達不能になり、自動クリーンアッププロセスが使用できない場合、ノードを再びクラスターに追加する前に実行する必要がある手順について説明します。

何が削除されるのか?

Rancherを使用してプロビジョニングされたノードをクリーンアップする際、削除するクラスターのノードのタイプに基づいて以下のコンポーネントが削除されます。

削除されたコンポーネント インフラストラクチャプロバイダーによってホストされているノード カスタムノード ホスト型クラスター 登録済みのノード

Rancherデプロイメントネームスペース(デフォルトでは`cattle-system`)

serviceAccountclusterRoles、および`clusterRoleBindings`はRancherによってラベル付けされています

ラベル、アノテーション、およびファイナライザー

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)を使用して登録されたクラスターの削除を開始すると、次のイベントが発生します。

  1. Rancherは、クラスターからRancherコンポーネントを削除するために使用する`serviceAccount`を作成します。このアカウントには、Rancherコンポーネントを削除するために必要な clusterRoleおよび clusterRoleBindingの権限が割り当てられています。

  2. `serviceAccount`を使用して、RancherはクラスターからRancherコンポーネントをクリーンアップする ジョブをスケジュールし、実行します。このジョブは、依存関係として`serviceAccount`とその役割も参照するため、ジョブは完了する前にそれらを削除します。

  3. Rancherはクラスターから削除されます。しかし、クラスターは持続し、Kubernetesのネイティブバージョンを実行します。

結果:削除されるものは?に登録されたクラスターのすべてのコンポーネントが削除されます。

Rancher UIを使用して登録されたクラスターのノードをクリーンアップする代わりに、スクリプトを実行することができます。

前提条件

kubectlをインストールします。

  1. ウェブブラウザを開き、 GitHubに移動して`user-cluster.sh`をダウンロードします。

  2. `user-cluster.sh`と同じディレクトリから次のコマンドを実行して、スクリプトを実行可能にします:

    chmod +x user-cluster.sh
  3. エアギャップ環境のみ:`user-cluster.sh`を開き、`yaml_url`を`user-cluster.yml`のURLに置き換えます。

    エアギャップ環境がない場合は、このステップをスキップしてください。

  4. 同じディレクトリからスクリプトを実行し、クラスターを管理するために使用されるRancherのバージョンと等しい`rancher/rancher-agent`イメージバージョンを指定します。 (<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に接続し、RKE2をインストールおよび管理するrancher-system-agent。

  • 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に接続し、K3sをインストールおよび管理するrancher-system-agent。

  • 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

ディレクトリ

/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
ディレクトリ

/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

ディレクトリをクリーンアップするには:

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

変更または構成される残りの2つのコンポーネントは、(仮想)ネットワークインタフェースとiptablesルールです。どちらもノードに対して非永続的であり、ノードの再起動後にクリアされます。これらのコンポーネントを削除するには、再起動をお勧めします。

ノードを再起動するには:

# using reboot
$ sudo reboot

# using shutdown
$ sudo shutdown -r now

(仮想)ネットワークインタフェースやiptablesルールについて詳しく知りたい場合は、以下の特定のトピックをご覧ください。

ネットワークインタフェース

クラスターのために構成されたネットワークプロバイダーに応じて、ノードにいくつかのネットワークインタフェースが存在する場合と存在しない場合があります。

インタフェース

flannel.1

cni0

tunl0

caliXXXXXXXXXXX(ランダムなネットワークインタフェース名)

vethXXXXXXXX(ランダムなネットワークインタフェース名)

すべてのネットワークインタフェースを一覧表示するには:

# Using ip
ip address show

# Using ifconfig
ifconfig -a

ネットワークインタフェースを削除するには:

ip link delete interface_name

Iptables

クラスターに設定されたネットワークプロバイダーによって、ノードに存在するチェーンがある場合とない場合があります。

Iptablesルールは、コンテナからのトラフィックをルーティングするために使用されます。作成されたルールは永続的ではないため、ノードを再起動するとiptablesは元の状態に戻ります。

チェーン

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(ランダムなチェーン名)

cali-nat-outgoing

cali-pri-kns.NAMESPACE(ネームスペースごとのチェーン)

cali-pro-kns.NAMESPACE(ネームスペースごとのチェーン)

cali-to-hep-forward

cali-to-host-endpoint

cali-to-wl-dispatch

cali-tw-caliXXXXXXXXXXX(ランダムなチェーン名)

cali-wl-to-host

KUBE-EXTERNAL-SERVICES

KUBE-FIREWALL

KUBE-MARK-DROP

KUBE-MARK-MASQ

KUBE-NODEPORTS

KUBE-SEP-XXXXXXXXXXXXXXXX(ランダムなチェーン名)

KUBE-SERVICES

KUBE-SVC-XXXXXXXXXXXXXXXX(ランダムなチェーン名)

すべてのiptablesルールを一覧表示するには:

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