Tanzu Kubernetes Grid (TKG) は、単一ノード クラスタをサポートします。単一ノード クラスタは、ホストされたワークロードが、単一の ESXi ホスト上で制御プレーン インフラストラクチャと一緒に実行されるワークロード クラスタです。
単一ノード クラスタの占有量をさらに最小限に抑えるには、tiny
Tanzu Kubernetes リリース (TKr) から作成します。これは、基本 OS に Photon または Ubuntu の Tiny OVA を持っています。このようなクラスタは、「最小」単一ノード クラスタと呼ばれます。
単一ノード クラスタは、vSphere 8 で実行され、スタンドアローン管理クラスタによって展開されるクラスベースのワークロード クラスタです。
注この機能は、サポートされていない「テクニカル プレビュー」状態です。「TKG の機能状態」を参照してください。
ユースケースは次のとおりです。
「スタンドアローン管理クラスタで使用する Tanzu CLI およびその他のツールのインストール」で説明されている、次がインストールされたブートストラップ マシン:
kubectl
imgpkg
Tanzu CLI で有効になっている single-node-clusters
設定:
tanzu config set features.cluster.single-node-clusters true
標準の Photon または Ubuntu TKr を使用する vSphere に単一ノード ワークロード クラスタを作成するには、次の手順を実行します。
「スタンドアローン管理クラスタを使用する vSphere の構成ファイル」の説明に従って、ワークロード クラスタのフラット構成ファイルを作成します。
「オブジェクト仕様の作成」で説明されているように、--dry-run
フラグを使用して tanzu cluster create
を実行し、フラット構成ファイルを Kubernetes スタイルの Cluster
オブジェクト仕様に変換します。
次の設定を含めるように Cluster
オブジェクト仕様を編集します。
topology.controlPlane
を次のようにします。
replicas: 1
topology.workers
ブロックがある場合は削除します。
topology.variables
を次のようにします。
- name: controlPlaneTaint
value: false
「オブジェクト仕様からのクラスベースのクラスタの作成」で説明されているように、変更した Cluster
オブジェクト仕様を使用して、tanzu cluster create
を実行します。
占有量を最小限に抑えるため、tiny
Tanzu Kubernetes リリース (TKr) を使用する単一ノード ワークロード クラスタを vSphere に作成するには、次の手順を実行します。
vSphere の ClusterClass
定義にパッチを適用して、管理クラスタが、標準の非単一ノード クラスタを作成するときに、tiny
TKr を使用しないようにします。
kubectl annotate --overwrite clusterclass tkg-vsphere-default-v1.0.0 run.tanzu.vmware.com/resolve-tkr='!tkr.tanzu.vmware.com/tiny'
管理クラスタで tiny
TKr をインストールします。
kubectl
のコンテキストを管理クラスタに設定します。
kubectl config use-context MY-MGMT-CLUSTER-admin@MY-MGMT-CLUSTER
ここで、MY-MGMT-CLUSTER
は管理クラスタの名前です。
次のコードを使用して、tiny
TKr の ConfigMap
定義ファイル tiny-tkr-cm.yaml
を作成します。
apiVersion: v1
data:
tkrVersions: '["v1.24.10+vmware.1-tiny.1-tkg.1"]'
kind: ConfigMap
metadata:
name: tkg-compatibility-versions-v1.24.10---vmware.1-tiny.1-tkg.1
namespace: tkg-system
labels:
run.tanzu.vmware.com/additional-compatible-tkrs: ""
TKG v2.1.0 の場合は、ここでの Kubernetes v1.24.9 のバージョンを以下のバージョンに置き換えます。TKr v1.24.9+vmware.1-tiny.2-tkg.1
、OVA v1.24.9 Tiny OVA
、および ConfigMap
の名前と他の文字列も同様に変更します。
TKr ConfigMap
を適用します。
kubectl apply -f tiny-tkr-cm.yaml
TKr パッケージ マニフェストとメタデータを /tmp/
ディレクトリにダウンロードします。
imgpkg pull -b projects.registry.vmware.com/tkg/tkr-repository-vsphere-edge:v1.24.10_vmware.1-tiny.1-tkg.1 -o /tmp/tkr-repository-vsphere-edge
TKr パッケージ マニフェストで、次のいずれかの方法で metadata.namespace
設定を "tkg-system"
に変更します。
次の yq
コマンドを実行します。
yq -i e '.metadata.namespace = "tkg-system"' /tmp/tkr-repository-vsphere-edge/packages/tkr-vsphere-edge.tanzu.vmware.com/1.24.10+vmware.1-tiny.1-tkg.1.yml
マニフェストを編集して、設定 namespace: "tkg-system"
を metadata
に追加します。
metadata:
[...]
namespace: "tkg-system"
TKr マニフェストを適用します。
kubectl apply -f /tmp/tkr-repository-vsphere-edge/packages/tkr-vsphere-edge.tanzu.vmware.com/1.24.10+vmware.1-tiny.1-tkg.1.yml
数分後に、kubectl get
を実行して、tiny
TKr、クラスタ ブートストラップ テンプレート、および OS イメージ オブジェクトがすべて作成されたことを確認します。例:
kubectl get tkr,cbt,osimage -A | grep -i tiny
出力は次のようになります。
v1.24.10---vmware.1-tiny.1-tkg.1 v1.24.10+vmware.1-tiny.1-tkg.1 True True 16m
tkg-system v1.24.10---vmware.1-tiny.1-tkg.1 antrea.tanzu.vmware.com.1.7.2+vmware.1-tkg.1-advanced vsphere-csi.tanzu.vmware.com.2.6.2+vmware.2-tkg.1 vsphere-cpi.tanzu.vmware.com.1.24.3+vmware.1-tkg.1 kapp-controller.tanzu.vmware.com.0.41.5+vmware.1-tkg.1
v1.24.10---vmware.1-tiny.1- 1.b3 v1.24.10+vmware.1-tiny.1 ubuntu 2004 amd64 ova 16m
v1.24.10---vmware.1-tiny.1-tkg.1-ac20b3 v1.24.10+vmware.1-tiny.1 photon 3 amd64 ova 16m
OVA を準備します。
Tanzu Kubernetes Grid のダウンロード ページに移動し、Customer Connect にログインします。
VMware Tanzu Kubernetes Grid の行で、[ダウンロードに移動 (Go to Downloads)] をクリックします。
バージョン 2.x
を選択し、[VMware Tanzu Kubernetes Grid] > [ダウンロードに移動 (GO TO DOWNLOADS)] の順にクリックします。
Tiny TKG OVA(テクニカル プレビュー)で、単一ノード クラスタに使用する Tiny OVA をダウンロードします。
Photon v3 Kubernetes v1.24.10 Tiny OVA(テクニカル プレビュー)
Ubuntu 2004 Kubernetes v1.24.10 Tiny OVA(テクニカル プレビュー)
「基本イメージ テンプレートの vSphere へのインポート」で説明されているように、Tiny OVA を vSphere 環境にインポートして、仮想マシン テンプレートに変換します。
単一ノード ワークロード クラスタを作成します。
注単一ノード クラスタの場合、「ワークロード クラスタの作成」で説明するように、
tanzu cluster create
を使用してフラット クラスタ構成ファイルを Kubernetes スタイルのオブジェクト仕様に変換することはできません。
この例で設定するように、環境変数を設定します。
export CLUSTER_NAME='workload-snc'
export CLUSTER_NAMESPACE='default'
export CLUSTER_CIDR='100.96.0.0/11'
export SERVICE_CIDR='100.64.0.0/13'
export VSPHERE_CONTROL_PLANE_ENDPOINT=10.185.11.134
export VSPHERE_SERVER=10.185.12.154
export VSPHERE_USERNAME='[email protected]'
export VSPHERE_PASSWORD=<encoded:QWRtaW4hMjM=>
export VSPHERE_DATACENTER='/dc0'
export VSPHERE_DATASTORE='/dc0/datastore/sharedVmfs-0'
export VSPHERE_FOLDER='/dc0/vm'
export VSPHERE_NETWORK='/dc0/network/VM Network'
export VSPHERE_RESOURCE_POOL='/dc0/host/cluster0/Resources'
export VSPHERE_SSH_AUTHORIZED_KEY=ssh-rsa AAAAB3[...]tyaw== [email protected]
export VSPHERE_TLS_THUMBPRINT=47:F5:83:8E:5D:36:[...]:72:5A:89:7D:29:E5:DA
export VSPHERE_CONTROL_PLANE_NUM_CPUS='4'
export VSPHERE_CONTROL_PLANE_MEM_MIB='4096'
export VSPHERE_CONTROL_PLANE_DISK_GIB='20'
export TKG_CUSTOM_IMAGE_REPOSITORY='projects.registry.vmware.com/tkg'
export OS_NAME='photon'
export TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE="LS0tL[...]0tLQo="
上記の変数を参照する Cluster
および Secret
のオブジェクト仕様を使用して、マニフェスト vsphere-snc.yaml
を作成します。
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
annotations:
tkg.tanzu.vmware.com/cluster-controlplane-endpoint: ${VSPHERE_CONTROL_PLANE_ENDPOINT}
run.tanzu.vmware.com/resolve-tkr: 'tkr.tanzu.vmware.com/tiny'
labels:
tkg.tanzu.vmware.com/cluster-name: ${CLUSTER_NAME}
name: ${CLUSTER_NAME}
namespace: ${CLUSTER_NAMESPACE}
spec:
clusterNetwork:
pods:
cidrBlocks:
- ${CLUSTER_CIDR}
services:
cidrBlocks:
- ${SERVICE_CIDR}
topology:
class: tkg-vsphere-default-v1.0.0
controlPlane:
metadata:
annotations:
run.tanzu.vmware.com/resolve-os-image: image-type=ova,os-name=${OS_NAME}
replicas: 1
variables:
- name: controlPlaneTaint
value: false
- name: auditLogging
value:
enabled: false
- name: apiServerEndpoint
value: ${VSPHERE_CONTROL_PLANE_ENDPOINT}
- name: aviAPIServerHAProvider
value: false
- name: imageRepository
value:
host: ${TKG_CUSTOM_IMAGE_REPOSITORY}
- name: trust
value:
additionalTrustedCAs:
- data: ${TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE}
name: imageRepository
- name: vcenter
value:
cloneMode: fullClone
datacenter: ${VSPHERE_DATACENTER}
datastore: ${VSPHERE_DATASTORE}
folder: ${VSPHERE_FOLDER}
network: ${VSPHERE_NETWORK}
resourcePool: ${VSPHERE_RESOURCE_POOL}
server: ${VSPHERE_SERVER}
storagePolicyID: ""
tlsThumbprint: ${VSPHERE_TLS_THUMBPRINT}
- name: user
value:
sshAuthorizedKeys:
- ${VSPHERE_SSH_AUTHORIZED_KEY}
- name: controlPlane
value:
machine:
diskGiB: ${VSPHERE_CONTROL_PLANE_DISK_GIB}
memoryMiB: ${VSPHERE_CONTROL_PLANE_MEM_MIB}
numCPUs: ${VSPHERE_CONTROL_PLANE_NUM_CPUS}
version: v1.24.10+vmware.1-tiny.1
---
apiVersion: v1
kind: Secret
metadata:
name: ${CLUSTER_NAME}
namespace: ${CLUSTER_NAMESPACE}
stringData:
password: ${VSPHERE_PASSWORD}
username: ${VSPHERE_USERNAME}
EOF
次の点に注意してください。
run.tanzu.vmware.com/resolve-tkr
の metadata.annotations
設定controlPlaneTaint
の topology.variables
設定topology.workers
ブロックはなく、topology.controlPlane
のみです。topology.version
は v1.24.9+vmware.1-tiny.2
になります。(オプション)デフォルトの Antrea CNI ではなく Calico を CNI として使用するようにクラスタを構成するには、「スーパーバイザーまたは単一ノードのクラスベースのワークロード クラスタの Calico CNI」にある、単一ノード クラスタ向けの手順に従ってください。
Cluster
オブジェクト マニフェストを適用します。
tanzu cluster create -f vsphere-snc.yaml
(TKG v2.1.0 のみ、オプション)クラスタにパーシステント ボリューム (PV) をプロビジョニングするには、vSphere StorageClass
オブジェクトを作成します。
注これらの手順は、TKG v2.1.1 以降では必要ありません。
マニフェスト vspherestorageclass.yaml
を作成します。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
storageclass.kubernetes.io/is-default-class: "true"
name: default
provisioner: csi.vsphere.vmware.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
StorageClass
マニフェストを適用します。
kubectl apply -f vspherestorageclass.yaml --kubeconfig=KUBECONFIG
ここで、KUBECONFIG
は単一ノード クラスタの kubeconfig
です。