Tanzu Kubernetes クラスタをプロビジョニングするには、kubectl と、YAML で定義したクラスタ仕様を使用して、Tanzu Kubernetes Grid サービス 宣言型 API を呼び出します。クラスタをプロビジョニングしたら、クラスタを操作し、kubectl を使用してワークロードをクラスタにデプロイします。
このワークフローは、Tanzu Kubernetes Grid サービス v1alpha2 APIをサポートしています。v1alpha1 APIを使用している場合は、ワークフローを参照してください。
前提条件
ワークフローの手順を開始する前に、次の前提条件が完了していることを確認します。
- Tanzu Kubernetes Grid サービス v1alpha2 APIをサポートするように環境をインストールまたは更新します。詳細については、要件を参照してください。v1alpha2 APIをサポートする最小の Tanzu Kubernetes リリースは
v1.21.2
です。詳細については、VMware Tanzu Kubernetes リリース ノートを参照してください。 - Tanzu Kubernetes クラスタをホストするための vSphere 名前空間 を構成します。名前空間には、DevOps エンジニアと共有ストレージのための編集権限が必要です。vSphere 名前空間 の作成と設定を参照してください。
- Tanzu Kubernetes リリース 用のコンテンツ ライブラリを作成して、使用するリリースを同期します。Tanzu Kubernetes リリース のコンテンツ ライブラリの作成と管理を参照してください。
- 使用するデフォルトの仮想マシン クラスと、カスタム仮想マシン クラスが必要かどうかを決定します。Tanzu Kubernetes クラスタの仮想マシンのクラスを参照してください。
- コンテンツ ライブラリおよび仮想マシン クラスに vSphere 名前空間 を関連付けている。Tanzu Kubernetes リリース 用の vSphere 名前空間 の構成を参照してください。
手順
- vSphere 向け Kubernetes CLI Tools をダウンロードしてインストールします。
ガイダンスについては、 vSphere 向け Kubernetes CLI Tools のダウンロードとインストールを参照してください。
- スーパーバイザー クラスタ を使用して、kubectl 向けの vSphere プラグイン で認証します。
kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
ガイダンスについては、 vCenter Single Sign-On ユーザーとして スーパーバイザー クラスタ に接続するを参照してください。 - スーパーバイザー クラスタ にログインできたことを確認します。
次のようなメッセージが表示されます。
Logged in successfully. You have access to the following contexts: 192.197.2.65 tkgs-ns
ここで、192.197.2.65
は スーパーバイザー クラスタ コンテキストで、tkgs-ns
は vSphere 名前空間 クラスタをプロビジョニングする Tanzu Kubernetes のコンテキストです。 - ターゲット 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
- ターゲット vSphere 名前空間 で使用可能な仮想マシン クラスのバインドを一覧表示します。
kubectl get virtualmachineclassbindings
使用できるのは、ターゲット名前空間にバインドされている仮想マシン クラスのみです。仮想マシン クラスが表示されない場合は、 vSphere 名前空間 にデフォルトの仮想マシン クラスが追加されていることを確認します。 - 使用可能なパーシステント ボリューム ストレージ クラスを取得します。
kubectl describe storageclasses
- 使用可能な Tanzu Kubernetes リリース を一覧表示します。
この操作を実行には、次のいずれかのコマンドを使用します。
kubectl get tkr
kubectl get tanzukubernetesreleases
このコマンドで返されたリリースのみを使用できます。いずれのリリースも表示されない場合、または必要なリリースが表示されない場合は、目的の OVA ファイルがコンテンツ ライブラリと同期されていることを確認します。 - Tanzu Kubernetes クラスタをプロビジョニングするための YAML ファイルを作成します。
- v1alpha2 APIの仕様を確認します。
- 要件に応じて、デフォルトまたはカスタムのいずれかのサンプル YAML ファイルを最初に使用してクラスタをプロビジョニングします。
- YAML ファイルを
tkgs-cluster-1.yaml
などの名前で保存します。 - 前述のコマンドの出力から収集された情報を使用し、要件に基づいて、次に示す情報を YAML ファイルにポピュレートします。
tkgs-cluster-1
などのクラスタの名前tkgs-ns
などのターゲット vSphere 名前空間guaranteed-medium
やguaranteed-small
などのバインドされた仮想マシン クラスvwt-storage-policy
などのクラスタ ノードおよびワークロードのストレージ クラス- 制御プレーンおよびワーカー ノード(レプリカ)の数
v1.21.6---vmware.1-tkg.1.b3d708a
などの TKR NAME 文字列で指定された Tanzu Kubernetes リリース
- 必要に応じて YAML ファイルをカスタマイズします。例:
etcd
やcontainerd
などの変更の多いコンポーネント用のボリュームを個別に追加します- クラスタ ノードのデフォルトのパーシステント ストレージ クラスを指定します
- 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 範囲を使用しています。 - 次の kubectl コマンドを実行して、クラスタをプロビジョニングします。
kubectl apply -f tkgs-cluster-1.yaml
予期される結果:tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
- 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 クラスタのステータスの監視を参照してください。 - クラスタ ノードのデプロイを vSphere Client で監視します。
vSphere の [ホストおよびクラスタ] のインベントリに、ターゲット vSphere 名前空間 にデプロイ中の仮想マシン ノードが表示されます。その他のガイダンスについては、 vSphere Client を使用した Tanzu Kubernetes クラスタのステータスの監視を参照してください。
- 追加の
kubectl
コマンドを実行して、クラスタのプロビジョニングを確認します。kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
その他のガイダンスについては、 Tanzu Kubernetes クラスタの操作コマンドの使用を参照してください。トラブルシューティングについては、 Tanzu Kubernetes クラスタのトラブルシューティングを参照してください。 - 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 クラスタに接続を参照してください。 - 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-ns
は vSphere 名前空間 コンテキスト、tkgs-cluster-1
は Tanzu Kubernetes クラスタ コンテキストです。 -
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-1
で Tanzu Kubernetes クラスタに切り替えて現在のコンテキストにします。 - 次の 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
- 追加の kubectl コマンドで、クラスタのプロビジョニングを確認します。
kubectl get namespaces
kubectl get pods -A
kubectl cluster-info
kubectl api-resources
- 適切なポッド セキュリティ ポリシーを定義します。
Tanzu Kubernetes クラスタでは、PodSecurityPolicy アドミッション コントローラがデフォルトで有効になります。ガイダンスについては、 Tanzu Kubernetes クラスタでのポッド セキュリティ ポリシーの使用を参照してください。ワークロードとユーザーによっては、システム提供の PodSecurityPolicy のバインドを作成するか、カスタム PodSecurityPolicy を作成します。 ポッド セキュリティ ポリシーのロール バインドの例を参照してください。
- サンプル ワークロードをデプロイし、クラスタの作成を確認します。
ガイダンスについては、 Tanzu Kubernetes クラスタへのワークロードのデプロイを参照してください。
- TKG Extensions をデプロイして、クラスタを操作できるようにします。
ガイダンスについては、 Tanzu Kubernetes クラスタへの TKG パッケージのデプロイを参照してください。