このワークフローに従い、kubectl コマンドと YAML に定義されたクラスタ仕様を使用して、TKG サービス クラスタを宣言によってプロビジョニングします。

このワークフローでは、kubectl と YAML を使用して、TKG クラスタを宣言によってプロビジョニングします。

前提条件

プロビジョニング ワークフローを開始する前に、次の前提条件を確認し、必要な手順を実施します。

手順

  1. vSphere 向け Kubernetes CLI Tools をインストールします。
  2. kubectl を使用して、スーパーバイザー で認証します。
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
    注: スーパーバイザー の FQDN は、有効になっている場合にのみ使用できます。詳細については、 スーパーバイザー の構成に関するドキュメントを参照してください。
  3. スーパーバイザー にログインできたことを確認します。
    次のようなメッセージが表示されます。
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkg2-cluster-namespace
    ここで、 192.197.2.65スーパーバイザー のコンテキストで、 tkg2-cluster-namespace は TKG クラスタをプロビジョニングする vSphere 名前空間 のコンテキストです。
  4. ターゲット vSphere 名前空間 が現在のコンテキストであることを確認します。
    kubectl config get-contexts
    CURRENT   NAME                    CLUSTER         AUTHINFO                                        NAMESPACE
              192.197.2.65            192.197.2.65    wcp:10.197.154.65:[email protected]
    *         tkg2-cluster-namespace  10.197.154.65   wcp:10.197.154.65:[email protected]   tkg2-cluster-namespace
    
    ターゲット vSphere 名前空間 が現在のコンテキストでない場合は、そのコンテキストに切り替えます。
    kubectl config use-context tkg2-cluster-namespace
  5. vSphere 名前空間 で使用可能な仮想マシン クラスを一覧表示します。
    kubectl get virtualmachineclass
    使用できるのは、ターゲット名前空間にバインドされている仮想マシン クラスのみです。仮想マシン クラスが表示されない場合は、デフォルトの仮想マシン クラスが vSphere 名前空間 に関連付けられていることを確認してください。 仮想マシン クラスのエラーのトラブルシューティングも参照してください。
  6. 使用可能なパーシステント ボリューム ストレージ クラスを取得します。
    kubectl describe namespace VSPHERE-NAMESPACE-NAME
    このコマンドは、名前空間に関する詳細情報を返します。これには、 tkg2-storage-policy.storageclass.storage.k8s.io/requests.storage のような形式でストレージ クラスの情報が含まれます。この文字列の最初のトークンはストレージ クラス名で、この例では tkg2-storage-policy となっています。 kubectl describe storageclasses コマンドを実行すると使用可能なストレージ クラスも返されますが、それには vSphere 管理者の権限が必要です。
  7. 使用可能な Tanzu Kubernetes リリース を一覧表示します。
    この操作を実行には、次のいずれかのコマンドを使用します。
    kubectl get tkr
    kubectl get tanzukubernetesreleases
    このコマンドを使用すると、この vSphere 名前空間 で使用できる TKR が返され、デプロイ先の スーパーバイザー との互換性を確認できます。このコマンドで返されたリリースのみを使用できます。リリースが一切表示されない、または必要なリリースが表示されない場合は、次の手順を実行したことを確認してください。a) TKR コンテンツ ライブラリを作成する、b) コンテンツ ライブラリを目的の OVA ファイルと同期する、c) コンテンツ ライブラリを TKG クラスタをプロビジョニングしている vSphere 名前空間 に関連付ける。
  8. TKG クラスタをプロビジョニングするための YAML ファイルを作成します。
    1. 作成するクラスタのタイプを決定して、その API と機能を確認します。
    2. 最初に、クラスタをプロビジョニングするためのサンプル YAML を 1 つ用意します。
    3. YAML ファイルを tkg2-cluster-1.yaml などの名前で保存します。
    4. 前述のコマンドの出力によって得られた情報を使用して、YAML に次の情報を入力します。
      • tkg2-cluster-1 などのクラスタの名前
      • 対象となる vSphere 名前空間
      • guaranteed-medium などのバインドされた仮想マシン クラス
      • クラスタ ノードとパーシステント ボリュームのストレージ クラス
      • 制御プレーンおよびワーカー ノード(レプリカ)の数
      • v1.25.7+vmware.3-fips.1-tkg.1 などの TKR NAME 文字列で指定された Tanzu Kubernetes リリース
    5. 必要に応じて TGK クラスタ YAML をカスタマイズします。
      • containerd などの変更の多いコンポーネント用のボリュームを個別に追加します。
      • クラスタ ノードとパーシステント ボリュームのデフォルトのパーシステント ストレージ クラスを指定します。
      • CNI、ポッド、サービス CIDR などのクラスタ ネットワークをカスタマイズします。
    6. YAML 構文チェッカーを使用し、YAML が有効であることを確認します。
    この手順を行うと、TKG クラスタをプロビジョニングするための有効な YAML が得られます。
  9. 次のコマンドを実行して、TKG クラスタをプロビジョニングします。
    kubectl apply -f tkg2-cluster-1.yaml
    予期される結果:
    tanzukubernetescluster.run.tanzu.vmware.com/tkg2-cluster-1 created
  10. TKG クラスタのプロビジョニングを監視します。
    kubectl get tanzukubernetesclusters
    kubectl get tkc
    v1beta1 API を使用してクラスタを作成する場合は、次のコマンドを使用します。
    kubectl get cluster
    最初の READY ステータスは、クラスタがプロビジョニング中であるため False です。数分後、READY ステータスが True になります。
    NAME              CONTROL PLANE   WORKER   TKR NAME                            AGE   READY   TKR COMPATIBLE   UPDATES AVAILABLE
    tkg2-cluster-1    3               6        v1.25.7+vmware.3-fips.1-tkg.1       49m   True    True
    追加のコマンドを実行して、クラスタの詳細を表示します。
    kubectl get tanzukubernetescluster,cluster,virtualmachinesetresourcepolicy,virtualmachineservice,kubeadmcontrolplane,machinedeployment,machine,virtualmachine
    kubectl describe tanzukubernetescluster tkg2-cluster-1
  11. クラスタ ノードのデプロイを vSphere Client で監視します。
    [ホストおよびクラスタ] に対応する vSphere インベントリに、ターゲット vSphere 名前空間 にデプロイされたクラスタ ノード仮想マシンが表示されます。
  12. すべての TKG クラスタ ノードが準備完了状態になったら、kubectl 向けの vSphere プラグイン を使用してクラスタにログインします。
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN \
    --vsphere-username USERNAME \
    --tanzu-kubernetes-cluster-name CLUSTER-NAME \
    --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
    例:
    kubectl vsphere login --server=192.197.2.65 --vsphere-username [email protected] \
    --tanzu-kubernetes-cluster-name tkg2-cluster-1 --tanzu-kubernetes-cluster-namespace tkg2-cluster-namespace
    注: ログイン コマンドは、制御プレーン ノードが実行され、認証サービス プラグインが起動した後にのみ成功します。ワーカー ノードの作成が進行中の場合にログインすると、結果にばらつきが生じる可能性があります。すべてのクラスタ ノードが準備完了状態になってから、ログインすることをお勧めします。
  13. コンテキストを TKG クラスタに切り替え、これを現在のコンテキストにします。
    TKG クラスタに正常にログインすると、次のようなメッセージが表示されます。
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkg2-cluster-namespace
       tkg2-cluster-1
    ここで、 192.197.2.65スーパーバイザー コンテキスト、 tkg2-cluster-namespacevSphere 名前空間 コンテキスト、 tkg2-cluster-1 は TKG クラスタ コンテキストです。
    TKG クラスタ コンテキストに切り替えます。
    kubect config use-context tkg2-cluster-1
  14. TKG クラスタ リソースを確認します。
    kubectl get nodes
    kubectl get namespaces
    kubectl get pods -A
    kubectl cluster-info
    kubectl api-resources
  15. テスト ポッドをデプロイして TKG クラスタを実行し、想定どおりに動作することを確認します。