Tanzu Kubernetes Grid サービス API は、インテリジェントなデフォルト設定と、Tanzu Kubernetes クラスタをカスタマイズする一連のオプションを提供します。ニーズに合ったさまざまな構成とカスタマイズを使用して、さまざまのタイプのクラスタをプロビジョニングする例を参照してください。
Tanzu Kubernetes クラスタをプロビジョニングするための最小限の YAML
次のサンプル YAML は、Tanzu Kubernetes Grid サービス を呼び出して、すべてのデフォルト設定を使用する Tanzu Kubernetes クラスタをプロビジョニングするために必要な最小限の構成です。
最小限必要なサンプル YAML の特性は、次のとおりです。
- 「v1.19」と示されている Tanzu Kubernetes リリース のバージョンは、
v1.19.7+vmware.1-tkg.1.xxxxxx
などのマイナー バージョンと一致する最新のディストリビューションに解決されます。更新のための Tanzu Kubernetes クラスタ互換性の確認を参照してください。 - 仮想マシン クラス
best-effort-<size>
に予約がありません。詳細については、『Tanzu Kubernetes クラスタの仮想マシンのクラス』を参照してください。 - クラスタにコンテナのパーシステント ストレージは含まれません。必要に応じて、
spec.settings.storage
で設定します。次のストレージの例を参照してください。 - Helm などの一部のワークロードでは、
spec.settings.storage.defaultClass
が必要になることがあります。次のストレージの例を参照してください。 spec.settings.network
セクションは指定されていません。つまり、クラスタは次のデフォルトのネットワーク設定を使用します。- デフォルトの CNI:
antrea
- デフォルトのポッド CIDR:
192.168.0.0/16
- デフォルトのサービス CIDR:
10.96.0.0/12
- デフォルトのサービス ドメイン:
cluster.local
注: ポッドのデフォルトの IP アドレス範囲は、192.168.0.0/16
です。このサブネットがすでに使用されている場合は、別の CIDR 範囲を指定する必要があります。以下のカスタム ネットワークの例を参照してください。- デフォルトの CNI:
apiVersion: run.tanzu.vmware.com/v1alpha1 #TKGS API endpoint kind: TanzuKubernetesCluster #required parameter metadata: name: tkgs-cluster-1 #cluster name, user defined namespace: tgks-cluster-ns #vsphere namespace spec: distribution: version: v1.20 #Resolves to latest TKR 1.20 topology: controlPlane: count: 1 #number of control plane nodes class: best-effort-medium #vmclass for control plane nodes storageClass: vwt-storage-policy #storageclass for control plane workers: count: 3 #number of worker nodes class: best-effort-medium #vmclass for worker nodes storageClass: vwt-storage-policy #storageclass for worker nodes
ディスク パラメータとストレージ パラメータを個別に使用するクラスタ
次のサンプル YAML は、クラスタ制御プレーン ノードとワーカー ノードにディスク パラメータとストレージ パラメータを個別に使用してクラスタをプロビジョニングする方法を示しています。
変更の多いデータのディスク パラメータとストレージ パラメータを分離すると、特に、リンク クローンの使用に関連する読み取り/書き込みオーバーヘッドを最小限にするのに有効です。主に 2 つのユースケースがあります。
- 制御プレーン ノードで etcd データベースのストレージ パフォーマンスをカスタマイズする
- ワーカー ノードでコンテナ イメージのディスク サイズをカスタマイズする
この例の特性は次のとおりです。
spec.topology.controlPlane.volumes
設定で、etcd データベースに個別のボリュームを指定します。spec.topology.workers.volumes
設定で、コンテナ イメージに個別のボリュームを指定します。- コンテナ イメージの
mountPath: /var/lib/containerd
は、Tanzu Kubernetes リリース 1.17 以降でサポートされています。
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-5 namespace: tgks-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: count: 3 class: best-effort-medium storageClass: vwt-storage-policy volumes: - name: etcd mountPath: /var/lib/etcd capacity: storage: 4Gi workers: count: 3 class: best-effort-medium storageClass: vwt-storage-policy volumes: - name: containerd mountPath: /var/lib/containerd capacity: storage: 16Gi
カスタム Antrea ネットワークを使用するクラスタ
次の YAML は、Antrea CNI のカスタム ネットワーク範囲を使用して
Tanzu Kubernetes クラスタをプロビジョニングする方法を示します。
- カスタム ネットワーク設定が適用されるため、デフォルトの Antrea CNI が使用されている場合でも、
cni.name
パラメータが必要になります。- CNI 名:
antrea
- カスタム ポッドの CIDR:
193.0.2.0/16
- カスタムのサービス CIDR:
195.51.100.0/12
- カスタムのサービス ドメイン:
managedcluster.local
- CNI 名:
- カスタム CIDR ブロックを スーパーバイザー クラスタ と重複させることはできません。詳細については、『Tanzu Kubernetes Grid サービス v1alpha1 API を使用する Tanzu Kubernetes クラスタの構成パラメータ』を参照してください。
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkg-cluster-3-antrea namespace: tkgs-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: class: guaranteed-medium count: 3 storageClass: vwt-storage-policy workers: class: guaranteed-medium count: 5 storageClass: vwt-storage-policy settings: network: cni: name: antrea #Use Antrea CNI pods: cidrBlocks: - 193.0.2.0/16 #Must not overlap with SVC services: cidrBlocks: - 195.51.100.0/12 #Must not overlap with SVC serviceDomain: managedcluster.local
カスタム Calico ネットワークを使用するクラスタ
次の YAML は、カスタム Calico ネットワークを使用して
Tanzu Kubernetes クラスタをプロビジョニングする方法を示しています。
- Calico はデフォルトの CNI ではないため、マニフェストで明示的に指定されます。サービス レベルでデフォルトの CNI を変更する方法については、Tanzu Kubernetes Grid サービス v1alpha1 API の構成の例を参照してください。
- CNI 名:
calico
- カスタム ポッドの CIDR:
198.51.100.0/12
- カスタムのサービス CIDR:
192.0.2.0/16
- カスタムのサービス ドメイン:
managedcluster.local
- CNI 名:
- ネットワークは、デフォルトではなく、カスタムの CIDR 範囲を使用します。これらの範囲が スーパーバイザー クラスタ と重複することはできません。Tanzu Kubernetes Grid サービス v1alpha1 API を使用する Tanzu Kubernetes クラスタの構成パラメータを参照してください。
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-2 namespace: tkgs-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: count: 3 class: guaranteed-large storageClass: vwt-storage-policy workers: count: 5 class: guaranteed-xlarge storageClass: vwt-storage-policy settings: network: cni: name: calico #Use Calico CNI for this cluster services: cidrBlocks: ["198.51.100.0/12"] #Must not overlap with SVC pods: cidrBlocks: ["192.0.2.0/16"] #Must not overlap with SVC serviceDomain: managedcluster.local
ストレージ クラスとパーシステント ボリュームのデフォルト クラスを使用するクラスタ
次のサンプル YAML は、動的な PVC プロビジョニング用のストレージ クラスとデフォルトのストレージ クラスを使用してクラスタをプロビジョニングする方法を示しています。
spec.settings.storage.classes
の設定は、クラスタ内のコンテナのパーシステント ストレージに 2 つのストレージ クラスを指定します。spec.settings.storage.defaultClass
が指定されています。アプリケーションによっては、デフォルトクラスが必要になることがあります。たとえば、多くのチャートで参照されているdefaultClass
として Helm または Kubeapps を使用する場合などです。
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: default-storage-spec namespace: tkgs-cluster-ns spec: topology: controlPlane: count: 3 class: best-effort-medium storageClass: vwt-storage-policy workers: count: 3 class: best-effort-medium storageClass: vwt-storage-policy distribution: version: v1.20 settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: "tanzukubernetescluster.local" storage: classes: ["gold", "silver"] #Array of named PVC storage classes defaultClass: silver #Default PVC storage class
プロキシ サーバを使用するクラスタ
プロキシ サーバの構成をクラスタ マニフェストに適用することにより、個々の Tanzu Kubernetes クラスタでプロキシ サーバを使用できるようになります。
次の特性に注意してください。
spec.settings.network.proxy
セクションは、この Tanzu Kubernetes クラスタの HTTP プロキシ構成を指定します。- いずれの
proxy
サーバ値の構文もhttp://<user>:<pwd>@<ip>:<port>
です。 localhost
と127.0.0.1
、および Tanzu Kubernetes クラスタのポッドとサービスの CIDR などの特定のエンドポイントは、自動的にプロキシされません。noProxy
フィールドにこれらを含める必要はありません。noProxy
フィールドには、プロキシにしない CIDR の配列を使用できます。スーパーバイザー クラスタ のワークロード ネットワークから必要な値を取得します。Tanzu Kubernetes Grid サービス v1alpha1 API を使用する Tanzu Kubernetes クラスタの構成パラメータ の図を参照してください。TkgServiceConfiguration
でグローバル プロキシが構成されている場合、そのプロキシ情報は、クラスタの初期デプロイ後にクラスタ マニフェストに伝達されます。グローバル プロキシ構成は、クラスタの作成時にプロキシ構成フィールドがない場合にのみ、クラスタ マニフェストに追加されます。つまり、クラスタごとの構成が優先されるため、グローバル プロキシ構成は上書きされます。
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-with-proxy namespace: tkgs-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: count: 3 class: guaranteed-medium storageClass: vwt-storage-policy workers: count: 5 class: guaranteed-xlarge storageClass: vwt-storage-policy settings: storage: classes: ["gold", "silver"] defaultClass: silver network: cni: name: antrea pods: cidrBlocks: - 193.0.2.0/16 services: cidrBlocks: - 195.51.100.0/12 serviceDomain: managedcluster.local proxy: httpProxy: http://10.186.102.224:3128 #Proxy URL for HTTP connections httpsProxy: http://10.186.102.224:3128 #Proxy URL for HTTPS connections noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20] #SVC Pod, Egress, Ingress CIDRs
TLS 用のカスタム証明書を使用するクラスタ
TkgServiceConfiguration
で
trust.additionalTrustedCAs
を指定する場合と同様の方法(
Tanzu Kubernetes Grid サービス v1alpha1 API の構成パラメータを参照)により、
TanzuKubernetesCluster
の仕様で
trust.additionalTrustedCAs
を
spec.settings.network
に含めることができます。例:
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-with-custom-certs-tls namespace: tkgs-cluster-ns spec: topology: controlPlane: count: 3 class: guaranteed-medium storageClass: vwt-storage-profile workers: count: 3 class: guaranteed-large storageClass: vwt-storage-profile distribution: version: 1.20.2 settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: "managedcluster.local" trust: additionalTrustedCAs: - name: custom-selfsigned-cert-for-tkc data: | LS0aaaaaaaaaaaaaaabase64...
TkgServiceConfiguration の仕様からグローバル設定を継承するクラスタと継承しないクラスタ
注: 次のクラスタ構成例では、
vCenter Server バージョン 7.0 Update 2a 以降と、
スーパーバイザー クラスタ バージョン 1.18.10 以降が必要です。
TkgServiceConfiguration
からグローバル設定を継承する
Tanzu Kubernetes クラスタをプロビジョニングするには、グローバル設定を指定しないか null に設定してクラスタを構成します。
たとえば、proxy
設定を継承するクラスタを構成する場合は、次のいずれかの方法を使用します。
オプション 1:クラスタ仕様に
proxy
設定を含めません。
... settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: "tanzukubernetescluster.local"
オプション 2:仕様に
proxy
設定を含め、その値を明示的に
null
に設定します。
settings: network: proxy: null
TkgServiceConfiguration
からデフォルト値を継承しない Tanzu Kubernetes クラスタをプロビジョニングするには、空の値を除くすべての要素を含むクラスタ仕様を構成します。
たとえば、
TkgServiceConfiguration
にグローバル
proxy
が構成されているときに、グローバル
proxy
設定を継承しないクラスタをプロビジョニングするには、クラスタ仕様に次の構文を含めます。
... settings: network: proxy: httpProxy: "" httpsProxy: "" noProxy: null
ローカル コンテンツ ライブラリを使用するクラスタ
エアギャップ環境で Tanzu Kubernetes クラスタをプロビジョニングするには、ローカル コンテンツ ライブラリから同期した仮想マシン イメージを使用してクラスタを作成します。
ローカル コンテンツ ライブラリ イメージを使用してクラスタをプロビジョニングするには、そのイメージをクラスタ仕様で指定する必要があります。
distribution.version
値には、フル イメージの名前を入力できます。また、イメージ ディレクトリから名前の形式を保持している場合は、Kubernetes のバージョンに短縮することができます。完全修飾バージョン番号を使用する場合は、
-----
を
+
に置き換えます。たとえば、OVA イメージに
photon-3-k8s-v1.20.2---vmware.1-tkg.1.1d4f79a
という名前が付けられている場合、次の形式を使用できます。
spec: distribution: version: v1.20
spec: distribution: version: v1.20.2
spec: distribution: version: v1.20.2+vmware.1-tkg.1
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tgks-cluster-9 namespace: tkgs-cluster-ns spec: topology: controlPlane: count: 3 class: best-effort-medium storageClass: vwt-storage-policy workers: count: 3 class: best-effort-medium storageClass: vwt-storage-policy distribution: version: v1.20.2 settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"]