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

このワークフローは、クラスタのプロビジョニング プロセスに対するエンドツーエンドの手順を示します。各ステップには、特定のタスクの詳細についてのリンクが含まれています。

前提条件

次の前提条件を満たすようにします。

手順

  1. このトピックの最初に記載した前提条件の完了を確認します。
  2. vSphere 向け Kubernetes CLI Tools をダウンロードしてインストールします。
    ガイダンスについては、 vSphere 向け Kubernetes CLI Tools のダウンロードとインストールを参照してください。
  3. スーパーバイザー クラスタ を使用して、kubectl 向けの vSphere プラグイン で認証します。
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
    ガイダンスについては、 vCenter Single Sign-On ユーザーとして スーパーバイザー クラスタ に接続するを参照してください。
  4. スーパーバイザー クラスタ にログインできたことを確認します。
    次のようなメッセージが表示されます。
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkgs-ns
    ここで、 192.197.2.65スーパーバイザー クラスタ コンテキストで、 tkgs-nsvSphere 名前空間 クラスタをプロビジョニングする Tanzu Kubernetes のコンテキストです。
  5. ターゲット vSphere 名前空間 が現在のコンテキストであることを確認します。
    kubectl config get-contexts
    CURRENT   NAME            CLUSTER         AUTHINFO                              NAMESPACE
              192.197.2.65    192.197.2.65    wcp:192.197.2.65:user@vsphere.local
    *         tkgs-ns         192.197.2.65    wcp:192.197.2.65:user@vsphere.local   tkgs-ns
    ターゲット vSphere 名前空間 が現在のコンテキストでない場合は、そのコンテキストに切り替えます。
    kubectl config use-context tkgs-ns
  6. ターゲット vSphere 名前空間 で使用可能な仮想マシン クラスのバインドを一覧表示します。
    kubectl get virtualmachineclassbindings
    使用できるのは、ターゲット名前空間にバインドされている仮想マシン クラスのみです。
    ガイダンスについては、 Tanzu Kubernetes クラスタの仮想マシンのクラスを参照してください。
  7. 使用可能なパーシステント ボリューム ストレージ クラスを取得します。
    kubectl describe storageclasses
  8. 使用可能な Tanzu Kubernetes リリース を一覧表示します。
    次のいずれかのコマンドを使用できます。
    kubectl get tkr
    kubectl get tanzukubernetesreleases
  9. Tanzu Kubernetes クラスタをプロビジョニングするための YAML ファイルを作成します。
    1. いずれかのサンプル YAML ファイルを使用して開始します。
    2. 前述のコマンドの出力から収集した次のような情報をクラスタ YAML にポピュレートします。
      • ターゲット vSphere 名前空間tkgs-ns
      • 変更の多いノード コンポーネントに対応する個別のボリューム:etcdcontainerd
      • クラスタ ノードとワークロードのストレージ クラス:vwt-storage-policy
      • バインドされた仮想マシン クラス:guaranteed-mediumguaranteed-small
      • TKR 名:v1.21.6---vmware.1-tkg.1.b3d708a
      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 範囲を使用しています。
    3. 構成パラメータの完全なリストを参照して、必要に応じてクラスタをカスタマイズします。
    4. ファイルを tkgs-cluster-1.yaml などの名前で保存します。
  10. 次の kubectl コマンドを実行して、クラスタをプロビジョニングします。
    kubectl apply -f tkgs-cluster-1.yaml
    予期される結果:
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
  11. 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 クラスタのステータスの監視を参照してください。
  12. クラスタ ノードのデプロイを vSphere Client で監視します。
    vSphere の [ホストおよびクラスタ] のインベントリに、ターゲット vSphere 名前空間 にデプロイ中の仮想マシン ノードが表示されます。
    その他のガイダンスについては、 vSphere Client を使用した Tanzu Kubernetes クラスタのステータスの監視を参照してください。
  13. 追加の kubectl コマンドを実行して、クラスタのプロビジョニングを確認します。
    kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
    その他のガイダンスについては、 Tanzu Kubernetes クラスタの操作コマンドの使用を参照してください。
    トラブルシューティングについては、 Tanzu Kubernetes クラスタのトラブルシューティングを参照してください。
  14. 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 user@vsphere.local \
    --tanzu-kubernetes-cluster-name tkgs-cluster-1 --tanzu-kubernetes-cluster-namespace tkgs-ns
    その他のガイダンスについては、 vCenter Single Sign-On ユーザーとして Tanzu Kubernetes クラスタに接続を参照してください。
  15. 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 クラスタ コンテキストです。
  16. kubectl で、使用可能なクラスタ コンテキストを一覧表示します。
    kubectl config get-contexts
    例:
    CURRENT   NAME             CLUSTER        AUTHINFO                                      NAMESPACE
              192.197.2.65     192.197.2.65   wcp:192.197.2.65:administrator@vsphere.local
    *         tkgs-cluster-1   192.197.2.67   wcp:192.197.2.67:administrator@vsphere.local
              tkgs-ns          192.197.2.65   wcp:192.197.2.65:administrator@vsphere.local   tkgs-ns
    必要に応じて、 kubect config use-context tkgs-cluster-1Tanzu Kubernetes クラスタに切り替えて現在のコンテキストにします。
  17. 次の 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
  18. 追加の kubectl コマンドで、クラスタのプロビジョニングを確認します。
    kubectl get namespaces
    kubectl get pods -A
    kubectl cluster-info
    kubectl api-resources
  19. 適切なポッド セキュリティ ポリシーを定義します。
    Tanzu Kubernetes クラスタでは、PodSecurityPolicy アドミッション コントローラがデフォルトで有効になります。ガイダンスについては、 Tanzu Kubernetes クラスタでのポッド セキュリティ ポリシーの使用を参照してください。
    ワークロードとユーザーによっては、システム提供の PodSecurityPolicy のバインドを作成するか、カスタム PodSecurityPolicy を作成します。 ポッド セキュリティ ポリシーのロール バインドの例を参照してください。
  20. サンプル ワークロードをデプロイし、クラスタの作成を確認します。
    ガイダンスについては、 Tanzu Kubernetes クラスタへのワークロードのデプロイを参照してください。
  21. TKG Extensions をデプロイして、クラスタを操作できるようにします。
    ガイダンスについては、 Tanzu Kubernetes クラスタへの TKG パッケージのデプロイを参照してください。