デフォルトでは、tanzu mc create
を実行して管理クラスタを展開すると、Tanzu Kubernetes Grid はローカル ブートストラップ マシンに一時的な kind
クラスタを作成します。次に、ローカル クラスタを使用して、ターゲット クラウド インフラストラクチャ(vSphere、Amazon Web Services (AWS)、または Azure)に最終的な管理クラスタをプロビジョニングし、管理クラスタが正常に展開された後に一時的なクラスタを削除します。tanzu mc delete
を実行して管理クラスタを削除すると、一時的なローカルの kind
クラスタを作成、使用、削除する同様のプロセスが呼び出されます。
場合によっては、管理クラスタを展開または削除した後も、ローカル クラスタを保持する必要があります。たとえば、クラスタ内のオブジェクトを調べたり、ログを確認したりする場合です。これを行うには、CLI オプション --use-existing-bootstrap-cluster
または --use-existing-cleanup-cluster
を使用して管理クラスタを展開または削除できます。
これらのオプションを使用すると、Tanzu Kubernetes Grid はローカルの kind
クラスタの作成と削除をスキップし、代わりに、既存のローカル クラスタ、またはその目的のために新規作成するローカル クラスタを使用します。
注意既存のブートストラップ クラスタの使用は、経験豊富な Kubernetes ユーザー向けの高度なユースケースです。可能であれば、Tanzu Kubernetes Grid が提供するデフォルトの
kind
クラスタを使用して管理クラスタをブートストラップすることを強くお勧めします。
管理クラスタの作成または削除中にローカルの kind
クラスタを保持するには、まずブートストラップ マシン上で互換性のあるクラスタが実行している必要があります。そのためには、以下のサブセクションの説明に従ってクラスタを特定または作成します。
既存のローカル クラスタを使用するには、次の両方の条件を満たしている必要があります。
クラスタが以前に管理クラスタのブートストラップまたは削除に使用されたことがない。
クラスタが kind
v0.11 以降で作成された。
これを確認するには、docker ps
を実行し、リストされている kindest:node
バージョンを kind
リリース ノートにリストされているバージョンと関連付けます。
背景:ブートストラップ マシンが 2021 年 5 月の Linux セキュリティ パッチの後にビルドされた Linux カーネル(Fedora を使用する Linux 5.11 や 5.12 など)を使用している場合は、ブートストラップ クラスタを kind
バージョン v0.11 以降で作成する必要があります。以前のバージョンの kind
は、最近の Linux バージョンで読み取り専用にされたファイルを変更しようとして失敗します。セキュリティ パッチは 4.9 以降のすべての LTS カーネルにバックポートされているため、たとえば Mac OS 上の Docker マシンや Windows Subsystem for Linux など、オペレーティング システムのアップデートが出荷される際に管理クラスタの展開に失敗する可能性があります。
上記の条件の両方が現在のローカル クラスタに当てはまる場合は、そのローカル クラスタを使用して管理クラスタを作成または削除できます。それ以外の場合は、次のようにクラスタを置き換える必要があります。
クラスタを削除します。
kind ドキュメントの説明に従って、新しいバージョンの kind
をダウンロードしてインストールします。
以下の「新しいクラスタの作成」セクションの説明に従って、kind
クラスタを作成します。
新しいローカル ブートストラップ クラスタを作成するには、ブートストラップ マシンの接続に応じて次のいずれかを実行します。
完全なオンライン環境:
クラスタを作成します。
kind create cluster
インターネットが制限された環境:
次のように、kind
クラスタ構成ファイル kind.yml
を作成します。
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: tkg-kind
nodes:
- role: control-plane
# This option mounts the host docker registry folder into
# the control-plane node, allowing containerd to access them.
extraMounts:
- containerPath: CONTAINER-CA-PATH
hostPath: HOST-CA-PATH
containerdConfigPatches:
- |-
[plugins."io.containerd.grpc.v1.cri".registry.configs."REGISTRY-FQDN".tls]
ca_file = "/etc/containerd/REGISTRY-FQDN/CA.crt"
ここで、
CONTAINER-CA-PATH
は、kind
コンテナの Harbor CA 証明書のパスです(例:/etc/containerd/REGISTRY-FQDN
)HOST-CA-PATH
は、kind
クラスタが作成されるブートストラップ仮想マシンの Harbor CA 証明書のパスです(例:/etc/docker/certs.d/REGISTRY-FQDN
)REGISTRY-FQDN
は Harbor レジストリの名前ですCA.crt
は Harbor レジストリの CA 証明書ですデフォルトでは、crashd
は tkg-kind
という名前のクラスタを検索するため、kind
クラスタに tkg-kind
という名前を付けると、クラスタがブートストラップに失敗した場合にログを収集しやすくなります。
上記の構成ファイルを使用して kind
クラスタを作成します。
kind create cluster --config kind.yml
既存のブートストラップ クラスタを使用して Tanzu Kubernetes Grid 管理クラスタを展開するには、次の手順を実行します。
上記の手順に従って、ローカル ブートストラップ クラスタを特定または作成します。
kubectl
のコンテキストをローカル ブートストラップ クラスタに設定します。
kubectl config use-context my-bootstrap-cluster-admin@my-bootstrap-cluster
--use-existing-bootstrap-cluster
オプションを指定して tanzu mc create
コマンドを実行し、管理クラスタを展開します。
tanzu mc create --file mc.yaml --use-existing-bootstrap-cluster my-bootstrap-cluster
tanzu mc create
の実行の詳細については、「管理クラスタの展開」を参照してください。
既存のブートストラップ クラスタを使用して Tanzu Kubernetes Grid 管理クラスタを削除するには、次の手順を実行します。
上記の手順に従って、ローカル ブートストラップ クラスタを特定または作成します。
kubectl
のコンテキストをローカル ブートストラップ クラスタに設定します。
kubectl config use-context my-bootstrap-cluster-admin@my-bootstrap-cluster
--use-existing-cleanup-cluster
オプションを指定して tanzu mc delete
コマンドを実行し、管理クラスタを削除します。
tanzu mc delete --use-existing-cleanup-cluster my-bootstrap-cluster
tanzu mc delete
の実行の詳細については、「管理クラスタの削除」を参照してください。