vSphere 上の単一ノード クラスタ(テクニカル プレビュー)

Tanzu Kubernetes Grid (TKG) は、単一ノード クラスタをサポートします。単一ノード クラスタは、ホストされたワークロードが、単一の ESXi ホスト上で制御プレーン インフラストラクチャと一緒に実行されるワークロード クラスタです。

単一ノード クラスタの占有量をさらに最小限に抑えるには、tiny Tanzu Kubernetes リリース (TKr) から作成します。これは、基本 OS に Photon または Ubuntu の Tiny OVA を持っています。このようなクラスタは、「最小」単一ノード クラスタと呼ばれます。

単一ノード クラスタは、vSphere 8 で実行され、スタンドアローン管理クラスタによって展開されるクラスベースのワークロード クラスタです。

  • この機能は、サポートされていない「テクニカル プレビュー」状態です。「TKG の機能状態」を参照してください。
  • 単一ノード クラスタは、NSX Advanced Load Balancer と互換性がありません。
  • TKG は、以前のバージョンの tiny TKr を実行しているクラスタのアップグレードをサポートしません。最小単一ノード クラスタを最新の tiny TKr バージョンに更新するには、古いクラスタを削除して新しいクラスタを作成する必要があります。

ユースケースは次のとおりです。

  • 単一ノード クラスタ
    • 試験的な開発環境とテスト環境
  • 最小単一ノード クラスタ
    • 離れているエッジ セル サイトや他のエッジの場所など、リソースに制約のあるホスト環境

前提条件

単一ノード クラスタの作成

標準の Photon または Ubuntu TKr を使用する vSphere に単一ノード ワークロード クラスタを作成するには、次の手順を実行します。

  1. スタンドアローン管理クラスタを使用する vSphere の構成ファイル」の説明に従って、ワークロード クラスタのフラット構成ファイルを作成します。

  2. オブジェクト仕様の作成」で説明されているように、--dry-run フラグを使用して tanzu cluster create を実行し、フラット構成ファイルを Kubernetes スタイルの Cluster オブジェクト仕様に変換します。

  3. 次の設定を含めるように Cluster オブジェクト仕様を編集します。

    • topology.controlPlane を次のようにします。

      replicas: 1
      
    • topology.workers ブロックがある場合は削除します。

    • topology.variables を次のようにします。

      - name: controlPlaneTaint
        value: false
      
  4. オブジェクト仕様からのクラスベースのクラスタの作成」で説明されているように、変更した Cluster オブジェクト仕様を使用して、tanzu cluster create を実行します。

最小単一ノード クラスタの作成

占有量を最小限に抑えるため、tiny Tanzu Kubernetes リリース (TKr) を使用する単一ノード ワークロード クラスタを vSphere に作成するには、次の手順を実行します。

  1. 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'
    
  2. 管理クラスタで tiny TKr をインストールします。

    1. kubectl のコンテキストを管理クラスタに設定します。

      kubectl config use-context MY-MGMT-CLUSTER-admin@MY-MGMT-CLUSTER
      

      ここで、MY-MGMT-CLUSTER は管理クラスタの名前です。

    2. 次のコードを使用して、tiny TKr の ConfigMap 定義ファイル tiny-tkr-cm.yaml を作成します。

      apiVersion: v1
      data:
        tkrVersions: '["v1.25.7+vmware.1-tiny.2-tkg.1"]'
      kind: ConfigMap
      metadata:
        name: tkg-compatibility-versions-v1.25.7---vmware.1-tiny.2-tkg.1
        namespace: tkg-system
        labels:
          run.tanzu.vmware.com/additional-compatible-tkrs: ""
      

      TKG v2.2.0 以外のリリースの場合は、ここでの Kubernetes v1.25.7 のバージョンを以下のバージョンに置き換えます。v1.25.7+vmware.1-tiny.2-tkg.1、OVA v1.25.7 Tiny OVAConfigMap 名およびその他の文字列も同様に、適切な Kubernetes バージョンで変更されました。

    3. TKr ConfigMap を適用します。

      kubectl apply -f tiny-tkr-cm.yaml
      
    4. TKr パッケージ マニフェストとメタデータを /tmp/ ディレクトリにダウンロードします。

      imgpkg pull -b projects.registry.vmware.com/tkg/tkr-repository-vsphere-edge:v1.25.7_vmware.1-tiny.2-tkg.1 -o /tmp/tkr-repository-vsphere-edge
      
    5. 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.25.7+vmware.1-tiny.2-tkg.1.yml
        
      • マニフェストを編集して、設定 namespace: "tkg-system"metadata に追加します。

        metadata:
          [...]
          namespace: "tkg-system"
        
    6. TKr マニフェストを適用します。

      kubectl apply -f /tmp/tkr-repository-vsphere-edge/packages/tkr-vsphere-edge.tanzu.vmware.com/1.25.7+vmware.1-tiny.2-tkg.1.yml
      
    7. 数分後に、kubectl get を実行して、tiny TKr、クラスタ ブートストラップ テンプレート、および OS イメージ オブジェクトがすべて作成されたことを確認します。例:

      kubectl get tkr,cbt,osimage -A | grep -i tiny
      

      出力は次のようになります。

      v1.25.7---vmware.1-tiny.2-tkg.1   v1.25.7+vmware.1-tiny.2-tkg.1   True    True         16m
      tkg-system   v1.25.7---vmware.1-tiny.2-tkg.1   antrea.tanzu.vmware.com.1.9.0+vmware.1-tkg.1-advanced        vsphere-csi.tanzu.vmware.com.2.7.1+vmware.2-tkg.1        vsphere-cpi.tanzu.vmware.com.1.25.1+vmware.2-tkg.1        kapp-controller.tanzu.vmware.com.0.41.7+vmware.1-tkg.1
      v1.25.7---vmware.1-tiny.2-  1.b3                       v1.25.7+vmware.1-tiny.2   ubuntu    2004         amd64   ova                 16m
      v1.25.7---vmware.1-tiny.2-tkg.1-ac20b3                       v1.25.7+vmware.1-tiny.2   photon    3            amd64   ova                 16m
      
  3. OVA を準備します。

    1. Tanzu Kubernetes Grid のダウンロード ページに移動し、Customer Connect にログインします。

    2. VMware Tanzu Kubernetes Grid の行で、[ダウンロードに移動 (Go to Downloads)] をクリックします。

    3. バージョン 2.x を選択し、[VMware Tanzu Kubernetes Grid] > [ダウンロードに移動 (GO TO DOWNLOADS)] の順にクリックします。

    4. Tiny TKG OVA(テクニカル プレビュー)で、単一ノード クラスタに使用する Tiny OVA をダウンロードします。

      • Photon v3 Kubernetes v1.25.7 Tiny OVA(テクニカル プレビュー)

      • Ubuntu 2004 Kubernetes v1.25.7 Tiny OVA(テクニカル プレビュー)

    5. 基本イメージ テンプレートの vSphere へのインポート」で説明されているように、Tiny OVA を vSphere 環境にインポートして、仮想マシン テンプレートに変換します。

  4. 単一ノード ワークロード クラスタを作成します。

    単一ノード クラスタの場合、「ワークロード クラスタの作成」で説明するように、tanzu cluster create を使用してフラット クラスタ構成ファイルを Kubernetes スタイルのオブジェクト仕様に変換することはできません。

    1. この例で設定するように、環境変数を設定します。

      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="
      
    2. 上記の変数を参照する 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.25.7+vmware.1-tiny.2
      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: ${CLUSTER_NAME}
        namespace: ${CLUSTER_NAMESPACE}
      stringData:
        password: ${VSPHERE_PASSWORD}
        username: ${VSPHERE_USERNAME}
      EOF
      

      次の点に注意してください。

      • run.tanzu.vmware.com/resolve-tkrmetadata.annotations 設定
      • controlPlaneTainttopology.variables 設定
      • topology.workers ブロックはなく、topology.controlPlane のみです。
      • 以前のバージョンの TKG では、topology.version は、v2.1.1 の場合は v1.24.10+vmware.1-tiny.1、v2.1.0 の場合は v1.24.9+vmware.1-tiny.2 である必要があります。
    3. (オプション)デフォルトの Antrea CNI ではなく Calico を CNI として使用するようにクラスタを構成するには、「スーパーバイザーまたは単一ノードのクラスベースのワークロード クラスタの Calico CNI」にある、単一ノード クラスタ向けの手順に従ってください。

    4. Cluster オブジェクト マニフェストを適用します。

      tanzu cluster create -f vsphere-snc.yaml
      
check-circle-line exclamation-circle-line close-line
Scroll to top icon