kubectl を使用してクラスタ自動スケーラ パッケージをインストールおよび構成するには、次の手順を参照してください。
要件
- vSphere の最小バージョンは、vSphere 8 U3
- vSphere 8 の場合、TKr の最小バージョンは TKr 1.27.x
- TKr のマイナー バージョンとクラスタ自動スケーラ パッケージのマイナー バージョンが一致
vSphere 名前空間 の構成
前提条件となる次のタスクを実行して、TKG クラスタをプロビジョニングします。
- 環境をインストールするか、vSphere 8 U3 および vSphere 8 用の TKr 1.27.x に更新します。
- コンテンツ ライブラリを最新の Tanzu Kubernetes リリース で作成またはアップデートします。TKG サービス クラスタ用 Kubernetes リリースの管理を参照してください。
- TKG クラスタをホストするための vSphere 名前空間を作成して構成します。TKG サービス クラスタをホストするための vSphere 名前空間 の構成を参照してください。
- vSphere 向け Kubernetes CLI Tools をインストールします。
次の例を使用して、コマンド ラインからツールをインストールできます。その他のガイダンスについては、vSphere 向け Kubernetes CLI Tools のインストールを参照してください。
curl -LOk https://${SUPERVISOR_IP-or-FQDN}/wcp/plugin/linux-amd64/vsphere-plugin.zip unzip vsphere-plugin.zip mv -v bin/* /usr/local/bin/
kubectl
とkubectl vsphere
を実行してインストールを確認します。
自動スケーラの注釈を使用した TKG クラスタの作成
次の手順に従って、TKG クラスタを作成します。その他のガイダンスについては、Kubectl を使用して TKG クラスタをプロビジョニングするためのワークフローを参照してください。
自動スケーラを使用するには、ここで説明するクラスタ仕様の例に示すように、自動スケーラ ラベルの注釈を使用してクラスタを構成する必要があります。通常のクラスタ プロビジョニングとは異なり、ワーカー ノード レプリカの数はハードコーディングされません。Kubernetes には、自動スケーラの最小サイズと最大サイズの注釈に基づくレプリカのデフォルト ロジックが組み込まれています。これは新しいクラスタであるため、クラスタの作成には最小サイズが使用されます。詳細については、https://cluster-api.sigs.k8s.io/tasks/automated-machine-management/autoscalingを参照してください。
- kubectl を使用して、スーパーバイザー で認証します。
kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
- クラスタをホストするターゲット vSphere 名前空間にコンテキストを切り替えます。
kubectl config use-context tkgs-cluster-namespace
- vSphere 名前空間 で使用可能な仮想マシン クラスを一覧表示します。
使用できるのは、ターゲット vSphere 名前空間にバインドされている仮想マシン クラスのみです。TKG サービス クラスタでの仮想マシン クラスの使用を参照してください。
- 使用可能なパーシステント ボリューム ストレージ クラスを一覧表示します。
kubectl describe namespace VSPHERE-NAMESPACE-NAME
このコマンドは、vSphere 名前空間に関する詳細情報を返します。これにはストレージ クラスの情報が含まれます。
kubectl describe storageclasses
コマンドを実行すると使用可能なストレージ クラスも返されますが、それには vSphere 管理者の権限が必要です。 - 使用可能な Tanzu Kubernetes リリース を一覧表示します。
kubectl get tkr
このコマンドは、この vSphere 名前空間で使用可能な TKr とその互換性を返します。TKG サービス クラスタ用 Kubernetes リリースの管理を参照してください。
- 収集した情報を使用して、必要なクラスタ自動スケーラ構成を含む TKG クラスタ仕様の YAML ファイルを作成します。
- ワーカー ノード プールの
*-min-size
注釈と*-max-size
注釈を使用します。この例では、拡張可能なワーカー ノードの最小数が 3、最大数が 5 です。デフォルトでは、クラスタは 3 つのワーカー ノードで作成されます。 - TKr と自動スケーラ パッケージには、一致するマイナー バージョンを使用します。
- 使用されるクラスタの
metadata.name
とmetadata.namespace
の値は、自動スケーラ パッケージのデフォルト値と一致しています。クラスタ仕様でこれらの値を変更する場合は、autoscaler-data-values
で変更する必要があります(以下を参照)。
#cc-autoscaler.yaml apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: gc1 namespace: cluster spec: clusterNetwork: pods: cidrBlocks: - 192.0.2.0/16 serviceDomain: cluster.local services: cidrBlocks: - 198.51.100.0/12 topology: class: tanzukubernetescluster controlPlane: metadata: {} replicas: 3 variables: - name: storageClasses value: - wcpglobal-storage-profile - name: vmClass value: guaranteed-medium - name: storageClass value: wcpglobal-storage-profile #minor versions must match version: v1.27.11---vmware.1-fips.1-tkg.2 workers: machineDeployments: - class: node-pool metadata: annotations: cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size: "3" cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size: "5" name: np-1
- ワーカー ノード プールの
- クラスタ仕様を適用します。
kubectl apply -f cc-autoscaler.yaml
- クラスタの作成を確認します。
kubectl get cluster,vm
- クラスタ ノードのバージョンを確認します。
kubectl get node
TKG クラスタへのパッケージ マネージャのインストール
- プロビジョニングした TKG クラスタにログインします。
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
- Carvel imgpkg ツールをインストールします。
wget -O- https://carvel.dev/install.sh > install.sh sudo bash install.sh
imgpkg version
を実行してインストールを確認します。- パッケージ リポジトリのバージョンを確認します。
imgpkg tag list -i projects.registry.vmware.com/tkg/packages/standard/repo
- パッケージ リポジトリをインストールします。リポジトリのバージョンを適宜更新します。
apiVersion: packaging.carvel.dev/v1alpha1 kind: PackageRepository metadata: name: tanzu-standard namespace: tkg-system spec: fetch: imgpkgBundle: image: projects.registry.vmware.com/tkg/packages/standard/repo:v2024.4.12
- パッケージ リポジトリを確認します。
kubectl get packagerepository -A NAMESPACE NAME AGE DESCRIPTION tkg-system tanzu-standard 2m22s Reconcile succeeded
- クラスタ自動スケーラ パッケージの有無を確認します。
kubectl get package NAME PACKAGEMETADATA NAME VERSION AGE cert-manager.tanzu.vmware.com.1.7.2+vmware.3-tkg.1 cert-manager.tanzu.vmware.com 1.7.2+vmware.3-tkg.1 5s cert-manager.tanzu.vmware.com.1.7.2+vmware.3-tkg.3 cert-manager.tanzu.vmware.com 1.7.2+vmware.3-tkg.3 5s cluster-autoscaler.tanzu.vmware.com.1.25.1+vmware.1-tkg.3 cluster-autoscaler.tanzu.vmware.com 1.25.1+vmware.1-tkg.3 5s cluster-autoscaler.tanzu.vmware.com.1.26.2+vmware.1-tkg.3 cluster-autoscaler.tanzu.vmware.com 1.26.2+vmware.1-tkg.3 5s cluster-autoscaler.tanzu.vmware.com.1.27.2+vmware.1-tkg.3 cluster-autoscaler.tanzu.vmware.com 1.27.2+vmware.1-tkg.3 5s contour.tanzu.vmware.com.1.26.2+vmware.1-tkg.1 contour.tanzu.vmware.com 1.26.2+vmware.1-tkg.1 5s ...
自動スケーラ パッケージのインストール
kube-system
名前空間にデプロイとしてインストールされます。
autoscaler.yaml
構成ファイルを作成します。- 環境に適した値を使用して仕様の
autoscaler-data-values
セクションを変更することで、自動スケーラをカスタマイズできます。
#autoscaler.yaml apiVersion: v1 kind: ServiceAccount metadata: name: autoscaler-sa namespace: tkg-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: autoscaler-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: autoscaler-sa namespace: tkg-system --- apiVersion: packaging.carvel.dev/v1alpha1 kind: PackageInstall metadata: name: autoscaler namespace: tkg-system spec: serviceAccountName: autoscaler-sa packageRef: refName: cluster-autoscaler.tanzu.vmware.com versionSelection: constraints: 1.27.2+vmware.1-tkg.3 values: - secretRef: name: autoscaler-data-values --- apiVersion: v1 kind: Secret metadata: name: autoscaler-data-values namespace: tkg-system stringData: values.yml: | --- arguments: ignoreDaemonsetsUtilization: true maxNodeProvisionTime: 15m maxNodesTotal: 0 metricsPort: 8085 scaleDownDelayAfterAdd: 10m scaleDownDelayAfterDelete: 10s scaleDownDelayAfterFailure: 3m scaleDownUnneededTime: 10m clusterConfig: clusterName: "gc1" clusterNamespace: "cluster" paused: false
- 環境に適した値を使用して仕様の
- クラスタ自動スケーラ パッケージをインストールします。
kubectl apply -f autoscaler.yaml
- 自動スケーラ パッケージのインストールを確認します。
kubectl get pkgi -A | grep autoscaler
予期される結果:tkg-system autoscaler cluster-autoscaler.tanzu.vmware.com 1.27.2+vmware.1-tkg.3 Reconcile succeeded 3m52s
- 自動スケーラのデプロイを確認します。
kubectl get pods -n kube-system | grep autoscaler
cluster-autoscaler-798b65bd9f-bht8n 1/1 Running 0 2m
クラスタの自動スケーリングのテスト
クラスタの自動スケーリングをテストするには、アプリケーションをデプロイし、レプリカの数を増やして、負荷を処理するための追加のワーカー ノードがスケール アウトされていることを確認します。
クラスタ自動スケーラのテストを参照してください。
自動スケーリングされたクラスタのアップグレード
自動スケーリングされたクラスタをアップグレードするには、自動スケーラ パッケージを一時停止します。
Kubectl を使用した自動スケール クラスタのアップグレードを参照してください。