Tanzu Kubernetes クラスタをプロビジョニングするには、kubectl と、YAML で定義したクラスタ仕様を使用して、Tanzu Kubernetes Grid サービス 宣言型 API を呼び出します。クラスタをプロビジョニングしたら、クラスタを操作し、kubectl を使用してワークロードをクラスタにデプロイします。

このワークフローは、Tanzu Kubernetes Grid サービス v1alpha2 APIをサポートしています。v1alpha1 APIを使用している場合は、ワークフローを参照してください。

前提条件

ワークフローの手順を開始する前に、次の前提条件が完了していることを確認します。

手順

  1. vSphere 向け Kubernetes CLI Tools をダウンロードしてインストールします。
    ガイダンスについては、 vSphere 向け Kubernetes CLI Tools のダウンロードとインストールを参照してください。
  2. スーパーバイザー クラスタ を使用して、kubectl 向けの vSphere プラグイン で認証します。
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
    ガイダンスについては、 vCenter Single Sign-On ユーザーとして スーパーバイザー クラスタ に接続するを参照してください。
  3. スーパーバイザー クラスタ にログインできたことを確認します。
    次のようなメッセージが表示されます。
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkgs-ns
    ここで、 192.197.2.65スーパーバイザー クラスタ コンテキストで、 tkgs-nsvSphere 名前空間 クラスタをプロビジョニングする Tanzu Kubernetes のコンテキストです。
  4. ターゲット vSphere 名前空間 が現在のコンテキストであることを確認します。
    kubectl config get-contexts
    CURRENT   NAME            CLUSTER         AUTHINFO                              NAMESPACE
              192.197.2.65    192.197.2.65    wcp:192.197.2.65:[email protected]
    *         tkgs-ns         192.197.2.65    wcp:192.197.2.65:[email protected]   tkgs-ns
    ターゲット vSphere 名前空間 が現在のコンテキストでない場合は、そのコンテキストに切り替えます。
    kubectl config use-context tkgs-ns
  5. ターゲット vSphere 名前空間 で使用可能な仮想マシン クラスのバインドを一覧表示します。
    kubectl get virtualmachineclassbindings
    使用できるのは、ターゲット名前空間にバインドされている仮想マシン クラスのみです。仮想マシン クラスが表示されない場合は、 vSphere 名前空間 にデフォルトの仮想マシン クラスが追加されていることを確認します。
  6. 使用可能なパーシステント ボリューム ストレージ クラスを取得します。
    kubectl describe storageclasses
  7. 使用可能な Tanzu Kubernetes リリース を一覧表示します。
    この操作を実行には、次のいずれかのコマンドを使用します。
    kubectl get tkr
    kubectl get tanzukubernetesreleases
    このコマンドで返されたリリースのみを使用できます。いずれのリリースも表示されない場合、または必要なリリースが表示されない場合は、目的の OVA ファイルがコンテンツ ライブラリと同期されていることを確認します。
  8. Tanzu Kubernetes クラスタをプロビジョニングするための YAML ファイルを作成します。
    1. v1alpha2 APIの仕様を確認します。
    2. 要件に応じて、デフォルトまたはカスタムのいずれかのサンプル YAML ファイルを最初に使用してクラスタをプロビジョニングします。
    3. YAML ファイルを tkgs-cluster-1.yaml などの名前で保存します。
    4. 前述のコマンドの出力から収集された情報を使用し、要件に基づいて、次に示す情報を YAML ファイルにポピュレートします。
      • tkgs-cluster-1 などのクラスタの名前
      • tkgs-ns などのターゲット vSphere 名前空間
      • guaranteed-mediumguaranteed-small などのバインドされた仮想マシン クラス
      • vwt-storage-policy などのクラスタ ノードおよびワークロードのストレージ クラス
      • 制御プレーンおよびワーカー ノード(レプリカ)の数
      • v1.21.6---vmware.1-tkg.1.b3d708a などの TKR NAME 文字列で指定された Tanzu Kubernetes リリース
    5. 必要に応じて YAML ファイルをカスタマイズします。例:
      • etcdcontainerd などの変更の多いコンポーネント用のボリュームを個別に追加します
      • クラスタ ノードのデフォルトのパーシステント ストレージ クラスを指定します
      • CNI、ポッド、サービス CIDR などのクラスタ ネットワークをカスタマイズします
    この手順を行うと、TKGS クラスタをプロビジョニングするための有効な YAML が得られます。例:
    apiVersion: run.tanzu.vmware.com/v1alpha2
    kind: TanzuKubernetesCluster
    metadata:
      name: tkgs-cluster-1
      namespace: tkgs-ns
    spec:
      topology:
        controlPlane:
          replicas: 3
          vmClass: guaranteed-medium
          storageClass: vwt-storage-policy
          volumes:
            - name: etcd
              mountPath: /var/lib/etcd
              capacity:
                storage: 4Gi
          tkr:
            reference:
              name: v1.21.6---vmware.1-tkg.1.b3d708a
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          vmClass: guaranteed-medium
          storageClass: vwt-storage-policy
          volumes:
            - name: containerd
              mountPath: /var/lib/containerd
              capacity:
                storage: 16Gi
          tkr:
            reference:
              name: v1.21.6---vmware.1-tkg.1.b3d708a
        - name: worker-nodepool-a2
          replicas: 2
          vmClass: guaranteed-small
          storageClass: vwt-storage-policy
          tkr:
            reference:
              name: v1.21.6---vmware.1-tkg.1.b3d708a
      settings:
        storage:
          defaultClass: vwt-storage-policy
    注: 上記の例では、デフォルトのクラスタ ネットワークである Antrea CNI と、クラスタ ポッドとサービスのデフォルトの CIDR 範囲を使用しています。
  9. 次の kubectl コマンドを実行して、クラスタをプロビジョニングします。
    kubectl apply -f tkgs-cluster-1.yaml
    予期される結果:
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
  10. kubectl を使用して、クラスタ ノードのデプロイを監視します。
    kubectl get tanzukubernetesclusters
    最初は、クラスタはプロビジョニング中なので、使用準備はできていません。
    NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE    READY   TKR COMPATIBLE   UPDATES AVAILABLE
    tkgs-cluster-1   3               5        v1.21.6---vmware.1-tkg.1.b3d708a   2m4s   False   True
    数分後、READY ステータスが True になります。
    NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE   READY   TKR COMPATIBLE   UPDATES AVAILABLE
    tkgs-cluster-1   3               5        v1.21.6---vmware.1-tkg.1.b3d708a   13m   True    True
    その他のガイダンスについては、 kubectl を使用した Tanzu Kubernetes クラスタのステータスの監視を参照してください。
  11. クラスタ ノードのデプロイを vSphere Client で監視します。
    vSphere の [ホストおよびクラスタ] のインベントリに、ターゲット vSphere 名前空間 にデプロイ中の仮想マシン ノードが表示されます。
    その他のガイダンスについては、 vSphere Client を使用した Tanzu Kubernetes クラスタのステータスの監視を参照してください。
  12. 追加の kubectl コマンドを実行して、クラスタのプロビジョニングを確認します。
    kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
    その他のガイダンスについては、 Tanzu Kubernetes クラスタの操作コマンドの使用を参照してください。
    トラブルシューティングについては、 Tanzu Kubernetes クラスタのトラブルシューティングを参照してください。
  13. kubectl 向けの vSphere プラグイン を使用して、クラスタにログインします。
    kubectl vsphere login --server=IP-ADDRESS --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 tkgs-cluster-1 --tanzu-kubernetes-cluster-namespace tkgs-ns
    その他のガイダンスについては、 vCenter Single Sign-On ユーザーとして Tanzu Kubernetes クラスタに接続を参照してください。
  14. Tanzu Kubernetes クラスタにログインできたことを確認します。
    次のようなメッセージが表示されます。
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkgs-cluster-1
       tkgs-ns
    ここで、 192.197.2.65スーパーバイザー クラスタ コンテキスト、 tkgs-nsvSphere 名前空間 コンテキスト、 tkgs-cluster-1Tanzu Kubernetes クラスタ コンテキストです。
  15. kubectl で、使用可能なクラスタ コンテキストを一覧表示します。
    kubectl config get-contexts
    例:
    CURRENT   NAME             CLUSTER        AUTHINFO                                      NAMESPACE
              192.197.2.65     192.197.2.65   wcp:192.197.2.65:[email protected]
    *         tkgs-cluster-1   192.197.2.67   wcp:192.197.2.67:[email protected]
              tkgs-ns          192.197.2.65   wcp:192.197.2.65:[email protected]   tkgs-ns
    必要に応じて、 kubect config use-context tkgs-cluster-1Tanzu Kubernetes クラスタに切り替えて現在のコンテキストにします。
  16. 次の kubectl コマンドで、クラスタのプロビジョニングを確認します。
    kubectl get nodes
    例:
    NAME                                                       STATUS   ROLES                  AGE   VERSION
    tkgs-cluster-1-control-plane-6ln2h                         Ready    control-plane,master   30m   v1.21.6+vmware.1
    tkgs-cluster-1-control-plane-6q67n                         Ready    control-plane,master   33m   v1.21.6+vmware.1
    tkgs-cluster-1-control-plane-jw964                         Ready    control-plane,master   37m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a1-4vvkb-65494d66d8-h5fp8   Ready    <none>                 32m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a1-4vvkb-65494d66d8-q4g24   Ready    <none>                 33m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a1-4vvkb-65494d66d8-vdcn4   Ready    <none>                 33m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a2-2n22f-bd59d7b96-nh4dg    Ready    <none>                 34m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a2-2n22f-bd59d7b96-vvfmf    Ready    <none>                 33m   v1.21.6+vmware.1
  17. 追加の kubectl コマンドで、クラスタのプロビジョニングを確認します。
    kubectl get namespaces
    kubectl get pods -A
    kubectl cluster-info
    kubectl api-resources
  18. 適切なポッド セキュリティ ポリシーを定義します。
    Tanzu Kubernetes クラスタでは、PodSecurityPolicy アドミッション コントローラがデフォルトで有効になります。ガイダンスについては、 Tanzu Kubernetes クラスタでのポッド セキュリティ ポリシーの使用を参照してください。
    ワークロードとユーザーによっては、システム提供の PodSecurityPolicy のバインドを作成するか、カスタム PodSecurityPolicy を作成します。 ポッド セキュリティ ポリシーのロール バインドの例を参照してください。
  19. サンプル ワークロードをデプロイし、クラスタの作成を確認します。
    ガイダンスについては、 Tanzu Kubernetes クラスタへのワークロードのデプロイを参照してください。
  20. TKG Extensions をデプロイして、クラスタを操作できるようにします。
    ガイダンスについては、 Tanzu Kubernetes クラスタへの TKG パッケージのデプロイを参照してください。