This site will be decommissioned on December 31st 2024. After that date content will be available at techdocs.broadcom.com.

vSphere 上的單節點叢集 (技術預覽)

Tanzu Kubernetes Grid (TKG) 支援單節點叢集。單節點叢集是工作負載叢集,其中主控的工作負載與控制平面基礎結構一起在單一 ESXi 主機上執行。

若要進一步最小化單節點叢集的磁碟使用量,您可以從 tiny Tanzu Kubernetes 版本 (Tkr) 建立該叢集,而該版本的基礎作業系統有 Photon 或 Ubuntu Tiny OVA。此類叢集稱為最小單節點叢集。

單節點叢集是在 vSphere 8 上執行且由獨立管理叢集部署的以類別為基礎的工作負載叢集。

附註

此功能處於不受支援的技術預覽狀態;請參閱 TKG 功能狀態

使用案例包括:

  • 單節點叢集
    • 實驗性開發和測試環境
  • 最小的單節點叢集
    • 資源受限的主機環境,例如遠端邊緣行動通訊基地台和其他邊緣位置

必要條件

  • vSphere 8 帳戶
  • 在 vSphere 8 上執行 TKG v2.1.x 的 TKG 獨立管理叢集
  • 安裝了以下工具的啟動機器,如安裝 Tanzu CLI 和其他工具以用於獨立管理叢集中所述:

    • Tanzu CLI
    • kubectl
    • imgpkg
    • (選用) yq v4.11.2
  • 在 Tanzu CLI 中啟用了 single-node-clusters 設定:

    tanzu config set features.cluster.single-node-clusters true
    

建立單節點叢集

若要在使用標準 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.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 OVAConfigMap 名稱以及其他做了類似變更的字串。

    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.24.10_vmware.1-tiny.1-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.24.10+vmware.1-tiny.1-tkg.1.yml
        
      • 編輯資訊清單,以在 metadata 下新增設定 namespace: "tkg-system"

        metadata:
          [...]
          namespace: "tkg-system"
        
    6. 套用 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
      
    7. 幾分鐘後,執行 kubectl get 以驗證 tiny TKr、叢集啟動程序範本和作業系統映像物件是否都已建立。例如:

      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
      
  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.24.10 Tiny OVA (技術預覽)

      • Ubuntu 2004 Kubernetes v1.24.10 Tiny OVA (技術預覽)

    5. 將 Tiny OVA 匯入您的 vSphere 環境,並將其轉換為虛擬機器範本,如將基礎映像範本匯入到 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. 使用參考上述變數的 ClusterSecret 物件規格建立資訊清單 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-tkrmetadata.annotations 設定
      • controlPlaneTainttopology.variables 設定
      • 沒有 topology.workers 區塊,只有 topology.controlPlane
      • 對於 TKG v2.1.0,topology.version 應為 v1.24.9+vmware.1-tiny.2
    3. (選用) 若要將叢集設定為使用 Calico 作為 CNI 而非預設的 Antrea CNI,請依照適用於主管或以單節點類別為基礎的工作負載叢集的 Calico CNI 中適用於單節點叢集的指示進行。

    4. 套用 Cluster 物件資訊清單:

      tanzu cluster create -f vsphere-snc.yaml
      
    5. (僅限 TKG v2.1.0,選用) 若要為叢集佈建持續性磁碟區 (PV),請建立 vSphere StorageClass 物件。

      附註

      TKG v2.1.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
        
      2. 套用 StorageClass 資訊清單:

        kubectl apply -f vspherestorageclass.yaml --kubeconfig=KUBECONFIG
        

        其中,KUBECONFIG 是單節點叢集的 kubeconfig

check-circle-line exclamation-circle-line close-line
Scroll to top icon