このトピックでは、ワークロード クラスタをシャットダウンして再起動する方法と、削除する方法について説明します。
ネットワークのメンテナンスのための計画的な停止や、計画的なネットワーク ダウンタイムに対応するために、ワークロード クラスタのシャットダウンと再起動が必要になる場合があります。
jq
がローカルにインストールされています。次のコマンドを実行して、etcd
データベースに関する情報を収集します。
kubectl --kubeconfig /etc/kubernetes/admin.conf get pods `kubectl --kubeconfig /etc/kubernetes/admin.conf get pods -A | grep etc | awk '{print $2}'` -n kube-system -o=jsonpath='{.spec.containers[0].command}' | jq
出力例:
[
"etcd",
"--advertise-client-urls=https://192.168.7.154:2379",
"--cert-file=/etc/kubernetes/pki/etcd/server.crt",
"--client-cert-auth=true",
"--data-dir=/var/lib/etcd",
"--initial-advertise-peer-urls=https://192.168.7.154:2380",
"--initial-cluster=workload-vsphere-tkg2-control-plane-fk5hw=https://192.168.7.154:2380",
"--key-file=/etc/kubernetes/pki/etcd/server.key",
"--listen-client-urls=https://127.0.0.1:2379,https://192.168.7.154:2379",
"--listen-metrics-urls=http://127.0.0.1:2381",
"--listen-peer-urls=https://192.168.7.154:2380",
"--name=workload-vsphere-tkg2-control-plane-fk5hw",
"--peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt",
"--peer-client-cert-auth=true",
"--peer-key-file=/etc/kubernetes/pki/etcd/peer.key",
"--peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt",
"--snapshot-count=10000",
"--trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt"
]
各制御プレーン ノードに対して以下を実行します。
ssh
コマンドを実行してノードにログインします。
次のコマンドを実行して、etcdctl
実行ファイルを見つけます。
find / -type f -name "*etcdctl*" -print
出力例:
/run/containerd/io.containerd.runtime.v1.linux/k8s.io/823581f975804b65048f4babe2015a95cfa7ed6f767073796afe47b9d03299fb/rootfs/usr/local/bin/etcdctl`
/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/19/fs/usr/local/bin/etcdctl
etcd
バックアップ ファイルを作成して確認します。
次のコマンドを実行します。
ETCD-EXE snapshot save LOCAL-BACKUP --endpoints=ENDPOINTS --cacert=CA --cert=CERT --key=KEY
ここで、
ETCD-EXE
は、etcdctl
実行ファイルへのローカル パスです。LOCAL-BACKUP
は、バックアップ先のローカル ファイルです(例:/tmp/etcdBackup1.db
)。ENDPOINTS
、CA
、CERT
、および KEY
は、上記で記録された --advertise-client-urls
、--peer-trusted-ca-file
、--cert-file
、および --key-file
の値です。例:
/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/19/fs/usr/local/bin/etcdctl snapshot save /tmp/etcdBackup1.db \
--endpoints=https://192.168.7.154:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key
バックアップ ファイルが作成されたことを確認します。
ls -l LOCAL-BACKUP
ファイルからスナップショットを生成して、バックアップの内容を確認します。
ETCD-EXE --write-out=table snapshot status LOCAL-BACKUP
ブートストラップ マシンから、次のコマンド シーケンスを実行してクラスタ情報を収集し、ファイルに保存します。
tanzu cluster list -A > CLUSTER-INFO-1
kubectl config get-contexts >> CLUSTER-INFO-1
kubectl config use-context tkg-mgmt-vsphere-20211111074850-admin@tkg-mgmt-vsphere-20211111074850 >> CLUSTER-INFO-1
kubectl get nodes -o wide >> CLUSTER-INFO-1
kubectl config use-context mycluster1-admin@mycluster1 >> CLUSTER-INFO-1
kubectl get nodes -o wide >> CLUSTER-INFO-1
cat CLUSTER-INFO-1
ここで、CLUSTER-INFO-1
は情報を保存するためのローカル テキスト ファイルです(例:/tmp/SaveClusterInfo1.txt
)。
ワーカー ノード上のすべてのアプリケーションをドレインします。
vCenter Server 上のすべての仮想マシンを次の順序で停止します。
vCenter Server 上のすべての仮想マシンを次の順序で再起動します。
次のコマンド シーケンスを実行してクラスタ情報を収集し、ファイルに保存します。
tanzu cluster list -A --include-management-cluster -A > CLUSTER-INFO-2
kubectl config get-contexts >> CLUSTER-INFO-2
kubectl config use-context tkg-mgmt-vsphere-20211111074850-admin@tkg-mgmt-vsphere-20211111074850 >> CLUSTER-INFO-2
kubectl get nodes -o wide >> CLUSTER-INFO-2
kubectl config use-context mycluster1-admin@mycluster1 >> CLUSTER-INFO-2
kubectl get nodes -o wide >> CLUSTER-INFO-2
cat CLUSTER-INFO-2
ここで、CLUSTER-INFO-2
は情報を保存するための異なるローカル テキスト ファイルです(例:/tmp/SaveClusterInfo2.txt
)。
2 つのクラスタ情報ファイルを比較して、同じクラスタ情報を持っていることを確認します。次に例を示します。
sdiff /tmp/SaveClusterInfo1.txt /tmp/SaveClusterInfo2.txt
ワークロード クラスタを削除するには、tanzu cluster delete
コマンドを実行します。クラスタの内容とクラウド インフラストラクチャによっては、クラスタ自体を削除する前に、クラスタ内のボリュームとサービスの削除が必要になる場合があります。
重要ワークロード クラスタは明示的に削除する必要があります。管理クラスタ内の名前空間を削除してワークロード クラスタを削除することはできません。
クラスタを一覧表示します。
Tanzu CLI の現在のログイン コンテキスト内のすべてのワークロード クラスタを一覧表示するには、tanzu cluster list -A
コマンドを実行します。
tanzu cluster list -A
ボリュームおよびサービスを削除します。
削除するクラスタにパーシステント ボリュームまたはロード バランサやデータベースなどのサービスが含まれている場合は、クラスタ自体を削除する前にそれらを手動で削除する必要がある場合があります。事前に削除する必要があるものは、クラウド インフラストラクチャによって異なります。
クラスタ内のサービス タイプ LoadBalancer (Service) を削除するには:
kubectl
をクラスタのコンテキストに設定します。
kubectl config set-context my-cluster@user
クラスタのサービス リストを取得します。
kubectl get service
各サービス タイプ LoadBalancer
を削除します。
kubectl delete service <my-svc>
クラスタ内のパーシステント ボリューム (PV) およびパーシステント ボリュームの要求 (PVC) オブジェクトを削除するには:
kubectl config set-context my-cluster@user
を実行して、kubectl
をクラスタのコンテキストに設定します。
kubectl get pvc
を実行して、クラスタのパーシステント ボリュームの要求 (PVC) を取得します。
各 PVC に対して以下を実行します。
kubectl describe pvc <my-pvc>
を実行して、バインドされている PV を特定します。PV は、コマンド出力に Volume として表示されます(Status: Bound の後)。
kubectl describe pv <my-pv>
を実行して、バインドされた PV Reclaim Policy
が Retain
または Delete
かどうかを判断します。
kubectl delete pvc <my-pvc>
を実行して PVC を削除します。
PV 再利用ポリシーが Retain
の場合は、kubectl delete pv <my-pvc>
を実行し、クラウド ポータルにログインして PV オブジェクトを削除します。たとえば、データストア ペイン > [監視] > [クラウド ネイティブ ストレージ] > [コンテナ ボリューム] から vSphere CNS ボリュームを削除します。vSphere CNS の詳細については、「VMware Cloud ネイティブ ストレージの使用開始」を参照してください。
kubectl delete
コマンドを実行します。その他のサービス:RDS や VPC など、クラスタの VPC 内のサブネットおよび AWS によってバッキングされたサービス、および次のような関連リソース。
上記のように AWS ユーザー インターフェイスでこれらのリソースを削除するか、aws
CLI を実行します。
パーシステント ボリュームおよびパーシステント ボリュームの要求:次の「パーシステント ボリュームの要求とパーシステント ボリュームの削除」の説明に従って、kubectl delete
コマンドを使用してこれらのリソースを削除します。
クラスタを削除すると、TKG によってクラスタのリソース グループに作成されたものすべてが削除されます。
必要に応じて、Velero のドキュメントの「Cluster Migration」および「Resource Filtering」の説明に従って Velero を使用するなどして、クラスタからワークロードを移行します。
クラスタを削除します。
クラスタを削除するには、tanzu cluster delete
を実行します。
tanzu cluster delete my-cluster
クラスタが default
名前空間以外の名前空間で実行されている場合は、--namespace
オプションを指定してそのクラスタを削除する必要があります。
tanzu cluster delete my-cluster --namespace=my-namespace
tanzu cluster delete
を実行するときに yes/no
検証手順をスキップするには、--yes
オプションを指定します。
tanzu cluster delete my-cluster --namespace=my-namespace --yes
AWS でクラスタを削除するには、AWS_REGION
変数をクラスタが実行されているリージョンに設定する必要があります。「AWS アカウントの認証情報の構成」で説明しているように、ローカル環境または認証情報プロファイルで AWS_REGION
を設定できます。別のリージョンのクラスタを削除するには、tanzu cluster delete
コマンドの先頭に設定を追加します。
AWS_REGION=eu-west-1 tanzu cluster delete my-cluster
重要Tanzu Kubernetes Grid 操作の実行中は、コンテキストを変更したり、
.kube-tkg/config
ファイルを編集したりしないでください。