多個 Kubernetes 版本

本主題說明如何列出可用的 Kubernetes 版本,並部署具有非預設 Kubernetes 版本的工作負載叢集。

關於 Kubernetes 版本

具有獨立管理叢集的 Tanzu Kubernetes Grid 的每個版本都提供一個預設版本和兩個非預設版本的 Kubernetes,藉由執行 tanzu kubernetes-release get 可列出這些版本。

Tanzu Kubernetes Grid 會管理具有 Tanzu Kubernetes 版本 (TKr) 物件的 Kubernetes 版本。TKr 指定與 TKr 中定義與 Kubernetes 版本相容的作業系統映像、核心 Kubernetes 元件和啟動載入套件。執行具有預設或非預設 Tkr 的 tanzu cluster create 時,Tanzu Kubernetes Grid 使用 TKr 中指定的元件和啟動載入套件來建立叢集。它還會讀取叢集組態檔,以決定建立叢集時要使用的相容作業系統映像。

有關支援的 Kubernetes 版本的完整清單,請參見《VMware Tanzu Kubernetes Grid v2.4 版本資訊》中的 Tanzu Kubernetes Grid v2.4 中支援的 Kubernetes 版本

列出可用版本

若要列出所有可用的 Kubernetes 版本及其目前的相容性和升級狀態,請執行具有選用版本相符引數的 tanzu kubernetes-release get,例如:

  • 若要列出所有版本,請執行 tanzu kubernetes-release get
  • 若要列出與 v1.26.8 相符的所有版本,請執行 tanzu kubernetes-release get v1.26.8
tanzu kubernetes-release get
NAME                       VERSION                  COMPATIBLE  ACTIVE  UPDATES AVAILABLE
v1.25.13---vmware.1-tkg.1  v1.25.13+vmware.1-tkg.1  True        True
v1.26.8---vmware.1-tkg.1   v1.26.8+vmware.1-tkg.1   True        True
v1.27.5---vmware.2-tkg.1   v1.27.5+vmware.1-tkg.1   True        True

列出可用的升級

若要探索可用於特定工作負載叢集的 Tkr 版本,請執行含有叢集全名的 tanzu cluster available-upgrades get,例如:

tanzu cluster available-upgrades get my-cluster

啟動或停用 Tanzu Kubernetes 版本

可以啟用或停用 TKr。若要啟用 TKr,請輸入:

tanzu kubernetes-release activate TKR-NAME

例如:

tanzu kubernetes-release activate v1.27.5---vmware.1-tkg.1

若要停用 TKr,請輸入:

tanzu kubernetes-release deactivate TKR-NAME

例如:

tanzu kubernetes-release deactivate v1.27.5---vmware.1-tkg.1

部署具有非預設 Kubernetes 版本的叢集

每個 Tanzu Kubernetes Grid 版本都會提供 Kubernetes 的預設版本。Tanzu Kubernetes Grid v2.4 的預設版本為 Kubernetes v1.27.5。

上游 Kubernetes 發行修補程式或新版本時,VMware 會將它們發佈於公用登錄中,Tanzu Kubernetes 版本控制器會將它們匯入至管理叢集。這可讓 Tanzu CLI 根據新版本建立叢集。

  • 若要列出可用的 Kubernetes 版本,請參閱上面的可用的 Kubernetes 版本
  • 若要部署執行 Kubernetes 非預設版本的叢集,請執行以下步驟。

將 Kubernetes 版本發佈到基礎結構

在 vSphere 和 Azure 上,您還需要另外執行一個步驟,才能部署執行 Kubernetes 非預設版本的叢集:

vSphere
將適當的基礎映像範本 OVA 檔案匯入至 vSphere,並轉換為虛擬機器範本。如需將基礎 OVA 檔案匯入至 vSphere 的相關資訊,請參閱 將基礎映像範本匯入到 vSphere
AWS
無需任何動作。含有支援的 Kubernetes 版本的 Amazon Linux 2 Amazon 機器映像 (AMI),會開放給所有支援的 AWS 區域中的所有 AWS 使用者使用。Tanzu Kubernetes Grid 會自動將適當的 AMI 版本用於您指定的 Kubernetes 版本。
Azure
執行 Azure CLI 命令,以接受基礎作業系統版本的授權。接受授權後,未來即可以跳過此步驟:
  1. tanzu kubernetes-release get 命令輸出中列出的目標 Kubernetes 版本轉換為其 Azure 映像 SKU,如下所示:

    • 將前置 v 變更為 k8s-
    • 將版本號碼中的 . 變更為 dot
    • 將尾端的 +vmware.* 變更為 -ubuntu-2004,以指定 Ubuntu v20.04 (在 Azure 上,這是所有 Tanzu Kubernetes Grid 虛擬機器的預設作業系統版本)。
    • 範例:k8s-1dot27dot5-ubuntu-2004k8s-1dot26dot8-ubuntu-2004
      1. 執行 az vm image terms accept。例如:
    az vm image terms accept --publisher vmware-inc --offer tkg-capi-2022-06-24 --plan k8s-1dot27dot5-ubuntu-2004
    

部署 Kubernetes 叢集

要部署執行非預設 Kubernetes 版本的工作負載叢集,請執行以下操作:

  1. 如果要部署基於計劃的叢集,請將環境變數 ALLOW_LEGACY_CLUSTER 設為 true

    export ALLOW_LEGACY_CLUSTER=true
    
  2. 如果要部署叢集的 Kubernetes 修補程式版本低於支援的 Kubernetes 版本中列出的其次要版本支援的最新修補程式版本,請在 ConfigMap 命名空間中為其 TKr 建立 tkg-system 物件:

    1. ConfigMap 命名空間中建立 tkg-system 物件定義,其中列出了較舊的 TKr:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        namespace: tkg-system
        name: TKR-CONFIG-NAME
        labels:
          run.tanzu.vmware.com/additional-compatible-tkrs: ""
      data:
        tkrVersions: |
            - TKR-VERSON-1
            - TKR-VERSON-2
      

      其中,TKR-CONFIG-NAME 是任何合法物件名稱,例如 tkg-v2.4.0TKR-VERSON-* 值是 tanzu kubernetes-release get 列出的舊 TKr 版本,例如 v1.24.11--vmware.1-tkg

    2. 建立 ConfigMap 物件:

      kubectl apply -f old-tkrs-config.yaml
      
  3. 如果您要部署的工作負載叢集的 Kubernetes 版本,不是 Tanzu Kubernetes Grid 的預設版本,請在 --tkr 選項中指定 Tanzu Kubernetes 版本。例如,若要部署 Kubernetes v1.25.13 叢集,請執行:

    tanzu cluster create my-1-25-10-cluster --tkr v1.25.13---vmware.1-tkg
    

如需如何建立工作負載叢集的詳細資料,請參閱建立工作負載叢集

使用自訂機器映像來部署叢集

對於常見的「作業系統版本/Kubernetes 版本/目標基礎結構」組合,具有獨立管理叢集的 Tanzu Kubernetes Grid 會提供預設機器映像。您可以選擇指定自訂機器映像,包括您自己建立的映像。

以下幾節說明如何使用替代或自訂建立的機器映像部署叢集:

使用替代的電腦映像

在叢集組態檔中,設定 OS_NAMEOS_VERSIONOS_ARCH 以指定基本機器映像,例如 ubuntu20.04photon3amd64。這些預設為 VMware 散發的作業系統映像,但您也可以指定自己的替代作業系統映像以用於叢集節點:

  1. 按照將基礎映像範本匯入到 vSphere 中所述,將映像上傳到 vSphere。

  2. 根據您的映像是否與由 VMware 散發的現有機器映像共用相同的作業系統版本,執行以下操作之一:

    • 如果要指定與現有 TKr 具有相同作業系統名稱、版本和架構的替代映像以及 VMware 散發的映像,請編輯其 OSImage 物件,例如:

      kubectl edit OSImage v1.26.8---vmware.1-tkg.1-6c92aa1cbb96b644085e6229f41ef14d
      
    • 否則,使用現有的 OSImage 物件定義作為範本建立並套用新的 OSImage 物件。將其 metadata.namespec.image.ref.version 值設為 OVA 檔名。

  3. OSImage 物件的 spec.image.ref 區塊中,新增識別碼欄位和值。例如,要在 VMware 散發的 Ubuntu 20.04 映像上啟用 Kubernetes v1.26.8 的替代方法,請執行以下操作:

    apiVersion: run.tanzu.vmware.com/v1alpha3
    kind: OSImage
    metadata:
      creationTimestamp: "2023-06-02T06:08:35Z"
      generation: 2
      labels:
        image-type: ova
        os-arch: amd64
        os-name: ubuntu
        os-type: linux
        ...
    spec:
      image:
        ref:
          MY-FIELD: MY-VALUE
          version: v1.26.8---vmware.1-tkg.1-6c92aa1cbb96b644085e6229f41ef14d
        type: ova
      kubernetesVersion: v1.26.8+vmware.1
      os:
        arch: amd64
        name: ubuntu
        type: linux
        version: "2004"
    

    其中,MY-FIELDMY-VALUE 是設為包含在 Cluster 物件規格中的識別碼欄位和值。

    • MY-VALUE 長度必須為 0-63 個字元,並且可以為空值,否則它必須以英數字元開頭和結尾,並且包含英數字元、短線 (-)、底線 (_) 或點 (.)。
    • TKG 將這些值複製到 OSImage 物件metadata.labels 設定中,其格式為 ova-MY-FIELD: MY-VALUE
  4. 如要在叢集中使用替代機器映像,請編輯 Cluster 物件,以將 ova-MY-FIELD=MY-VALUE 設定新增到將要使用該映像的叢集節點的 metadata.annotations

    • 對於控制平面節點,在 metadata.annotations 之下編輯 topology.controlPlane
    • 對於 worker 節點,在 metadata.annotations 之下編輯將要使用該映像的機器部署的 topology.workers.machineDeployments
    • 例如:

      metadata:
        annotations:
          run.tanzu.vmware.com/resolve-os-image: image-type=ova,ova-my-field=my-value
      

建立和使用自訂機器映像

您可以建立自己的機器映像以用於叢集節點。執行此動作的原因包括:

  • 為了在 VMware 支援但不散佈的基礎作業系統 (如 Red Hat Enterprise Linux (RHEL) v8) 上建立叢集。
  • 為了將其他套件安裝到基本機器映像,或者依照《Image Builder 說明文件》中的自訂中所述來自訂它。

如需相關指示,請參閱建置機器映像

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