若要升級 Tanzu Kubernetes Grid (TKG),請在您作為啟動機器的機器上,下載並安裝新版本的 Tanzu CLI。此外,還必須下載並安裝基礎映像範本和虛擬機器,具體取決於您要升級的叢集,先前是部署到 vSphere、Amazon Web Services (AWS) 還是 Azure。
附註在 TKG 升級路徑中,v2.2 緊接在 v2.1.1 之後。
安裝新版本的元件後,可以使用 tanzu mc upgrade
和 tanzu cluster upgrade
CLI 命令,來升級管理叢集和工作負載叢集。
接下來幾節是升級 Tanzu Kubernetes Grid 時所需的整體步驟。此程序會假設您要升級到 Tanzu Kubernetes Grid v2.2.0。
有些步驟是僅當您執行從 Tanzu Kubernetes Grid v2.1.x 到 v2.2.x 的次要升級時才需要執行,若您執行的是從 Tanzu Kubernetes Grid v2.2.x 到 v2.2.y 的修補程式升級,就不需要執行。
升級到 TKG v2.2.x 之前,請確保目前的部署為 TKG v2.1.x 或更早的 v2.2 版本。若要從早於 v2.1 的版本升級到 TKG v2.2.x,必須先使用 Tanzu CLI v2.1.x 升級到 v2.1.x。
重要與 vSphere 8 中的 TKG 2.x 和 vSphere with Tanzu 主管相容的 Tanzu CLI 版本與 vSphere 7 中的主管叢集不相容。如要在 vSphere 7 上對 vSphere with Tanzu 主管叢集使用 Tanzu CLI,請使用 TKG v1.6 中的 Tanzu CLI 版本。如要使用與具有主管的 TKG 2.x 相容的 Tanzu CLI 版本,請升級到 vSphere 8。如果 vSphere with Tanzu 主管叢集不存在,您可以將獨立 TKG 2.x 管理叢集部署到 vSphere 7。有關 Tanzu CLI 與 VMware 產品之間相容性的資訊,請參閱 Tanzu CLI 文件。
從 v2.1.x 到 v2.2.x 的主要升級,以及從 v2.2.x 到 v2.2.y 的修補程序升級,都需要執行此步驟。
若要下載並安裝新版本的 Tanzu CLI,請執行以下步驟。
刪除 ~/.config/tanzu/tkg/compatibility/tkg-compatibility.yaml
檔案。
如果不刪除此檔案,新版本的 Tanzu CLI 將繼續使用先前版本的用料表清單 (BOM)。刪除此檔案會促使 Tanzu CLI 提取已更新的 BOM。從 2.1.x 升級到 2.2.x 以及從 2.2.x 升級到 2.2.y 時,必須執行此步驟。
遵循安裝 Tanzu CLI 和其他工具以用於獨立管理叢集中的指示,在目前執行 tanzu
命令的機器上,下載並安裝 Tanzu CLI 和 kubectl
。
tanzu version
,檢查是否適當安裝了正確版本的 Tanzu CLI。根據 Tanzu Framework v0.29.0,Tanzu Kubernetes Grid v2.2 會使用 Tanzu CLI v0.29.0。kubectl
後,請執行 kubectl version
,檢查是否適當安裝了正確版本的 kubectl
。如需 Tanzu CLI 命令和可用選項的相關資訊,請參閱 Tanzu CLI 命令參考。
升級管理叢集和工作負載叢集之前,您必須先執行準備步驟,且具體取決於您的叢集是部署在 vSphere、AWS 還是 Azure 上。從 v2.1.x 到 v2.2.x 的主要升級,以及從 v2.2.x 到 v2.2.y 的修補程序升級,都需要執行此步驟。
此程序會假設您要升級到 Tanzu Kubernetes Grid v2.2.x。
針對您的管理叢集和工作負載叢集正在執行的作業系統和 Kubernetes 版本系列,下載最新的 Tanzu Kubernetes Grid OVA。
例如,對於 Photon v3 映像:
對於 Ubuntu 20.04 映像:
重要如果是安全修補程式版本,請確定您下載的是最新的 OVA 基礎映像範本。您可以在 Tanzu Kubernetes Grid 產品下載頁面上,找到已更新且包含安全修補程式的基礎映像範本。
遵循安裝程式提示,從 OVA 部署虛擬機器。
tkg-user
) 指派給具有 Tanzu Kubernetes Grid 角色的範本,例如 TKG
。您已在準備將管理叢集部署到 vSphere 中建立了此使用者和角色。針對您已下載其 OVA 檔案的每個 Kubernetes 版本,重複此程序。
VMware Cloud on AWS SDDC 相容性
如果要升級部署在 VMware Cloud on AWS 上的工作負載叢集,請確認您現有部署使用的底層「軟體定義的資料中心 (SDDC)」版本與要升級成的 Tanzu Kubernetes Grid 版本相容。
若要檢視 SDDC 的版本,請在 VMware Cloud 主控台中的 SDDC 動態磚上,選取檢視詳細資料 (View Details),然後按一下支援 (Support) 窗格。
若要驗證與 Tanzu Kubernetes Grid 的相容性,請參閱 VMware 產品互通性對照表。
含有支援的 Kubernetes 版本的 Amazon Linux 2 Amazon 機器映像 (AMI),會開放給所有支援的 AWS 區域中的所有 AWS 使用者使用。Tanzu Kubernetes Grid 會自動將適當的 AMI 版本用於您在升級期間指定的 Kubernetes 版本。
若要接受條款,請執行以下動作:
列出 Azure Marketplace 中 Tanzu Kubernetes Grid 的所有可用虛擬機器映像:
az vm image list --publisher vmware-inc --offer tkg-capi --all
接受新預設虛擬機器映像的條款:
az vm image terms accept --urn publisher:offer:sku:version
例如,若要接受 Tanzu Kubernetes Grid v2.2.x 中預設虛擬機器映像 (k8s-1dot25dot7-ubuntu-2004
) 的條款,請執行:
az vm image terms accept --urn vmware-inc:tkg-capi:k8s-1dot25dot7-ubuntu-2004:2021.05.17
如果您打算將任何工作負載叢集升級到非預設 Kubernetes 版本 (例如 v1.24.11 或 v1.23.17),請接受您要用於叢集虛擬機器的每一個非預設版本的相關條款。
只有具有獨立管理叢集的 TKG,才需要執行此步驟。如果您執行的 TKG 具有 vSphere with Tanzu 主管,請隨 vSphere 一起升級主管,然後藉由升級其 TKr,來更新主管的 Kubernetes 版本。
從 v2.1.x 到 v2.2.x 的主要升級,以及從 v2.2.x 到 v2.2.y 的修補程序升級,都需要執行此步驟。
若要升級 Tanzu Kubernetes Grid,必須升級您的部署中的所有管理叢集。在升級管理工作負載叢集的管理叢集之前,您無法升級工作負載叢集。
請遵循升級獨立管理叢集中的程序,來升級管理叢集。
從 v2.1.x 到 v2.2.x 的主要升級,以及從 v2.2.x 到 v2.2.y 的修補程序升級,都需要執行此步驟。
請遵循升級工作負載叢集中的程序,來升級正在執行您的工作負載的工作負載叢集。
升級叢集後,您還需要執行一些其他步驟,以完成升級程序。
依預設,安裝在管理叢集中的某些套件 (例如 cert-manager
) 可以在工作負載叢集和共用服務叢集中,安裝成 CLI 管理的套件。將管理叢集升級到最新的 Tanzu Kubernetes Grid 版本後,會自動更新其預設套件。
您可以在不同的工作負載叢集中執行不同版本的 CLI 管理套件。在工作負載叢集中,您可以執行 CLI 管理套件的最新支援版本,或執行您先前安裝的兩個最新 Tanzu Kubernetes Grid 版本中的套件版本。例如,如果 cert-manager
的最新封裝版本為 v1.10.1,而您先前的兩個 Tanzu Kubernetes Grid 安裝架構執行的是 cert-manager
v1.7.2 和 v1.5.3,則您可以在工作負載叢集中執行 cert-manager
v1.10.1、v1.7.2 和 v1.5.3 版本。
若有工作負載叢集所執行的套件版本數目,超過 n-2 個已安裝且舊於管理叢集中套件版本的 Tanzu Kubernetes Grid 版本,則您必須更新套件存放庫 (請參閱更新套件存放庫),然後升級工作負載叢集中的套件 (請參閱更新套件)。如果您不升級套件版本,將無法更新套件組態,因為套件存放庫中所包含的舊版套件可能不會超過 n-2 個。
重要如果已在工作負載叢集上安裝 Prometheus,並將工作負載叢集升級到 Kubernetes v1.25,則必須將 Prometheus 升級到版本
2.37.0+vmware.3-tkg.1
。Prometheus 軟體套件的早期版本 (例如版本2.37.0+vmware.1-tkg.1
) 與 Kubernetes 1.25 不相容。
視您的叢集是在 vSphere、AWS 還是 Azure 上執行,在升級叢集後,您還必須執行某些作業。
如果您的 TKG v2.1 安裝架中未啟用 NSX ALB,請參閱安裝和設定 NSX Advanced Load Balancer,以取得如何安裝 NSX ALB 的相關資訊。
如果在 TKG v2.1 安裝中啟用了 NSX ALB,請參閱 Tanzu Kubernetes Grid v2.2 發行說明,以瞭解此版本支援的 Avi 控制器版本,以及是否需要將 Avi 控制器升級到相容版本。若要升級 Avi 控制器,請參閱 Avi Vantage 彈性升級。
如果叢集在此之前未安裝 AWS EBS CSI 驅動程式,請在將 Tanzu Kubernetes Grid 安裝架構升級到 v2.2+ 後,遵循此程序進行安裝。
授與 AWS EBS CSI 驅動程式的權限:
export AWS_REGION={YOUR_AWS_REGION}
tanzu mc permissions aws set
針對使用 CSI 儲存區的每個工作負載叢集:
匯出以下環境變數,並設定功能旗標:
export _TKG_CLUSTER_FORCE_ROLE="management"
export FILTER_BY_ADDON_TYPE="csi/aws-ebs-csi-driver"
export NAMESPACE="tkg-system"
export DRY_RUN_MODE="legacy"
tanzu config set features.cluster.allow-legacy-cluster true
在上面的範例中,將 NAMESPACE
設定為叢集的命名空間 tkg-system
。
產生 CSI 驅動程式資訊清單:
tanzu cl create ${TARGET_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
其中,TARGET_CLUSTER_NAME
是您在其中安裝了 CSI 驅動程式的叢集名稱。
在 csi-driver-addon-manifest.yaml
中,以工作負載叢集的命名空間來更新中繼資料中的密碼命名空間。使用 kubectl get cluster -A
命令,檢視叢集的命名空間。
將所做的變更套用在管理叢集的內容中:
kubectl apply -f csi-driver-addon-manifest.yaml
取消設定以下環境變數和功能旗標:
unset _TKG_CLUSTER_FORCE_ROLE
unset FILTER_BY_ADDON_TYPE
unset NAMESPACE
unset DRY_RUN_MODE
tanzu config set features.cluster.allow-legacy-cluster false
針對使用 CSI 儲存區的管理叢集:
匯出以下環境變數:
export _TKG_CLUSTER_FORCE_ROLE="management"
export FILTER_BY_ADDON_TYPE="csi/aws-ebs-csi-driver"
export NAMESPACE="tkg-system"
export DRY_RUN_MODE="legacy"
tanzu config set features.cluster.allow-legacy-cluster true
在上面的範例中,將 NAMESPACE
設定為叢集的命名空間 tkg-system
。
產生 CSI 驅動程式資訊清單:
tanzu mc create ${MANAGEMENT_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
其中,MANAGEMENT_CLUSTER_NAME
是管理叢集的名稱。
在 csi-driver-addon-manifest.yaml
中,以管理叢集的命名空間來更新中繼資料中的密碼命名空間。使用 kubectl get cluster -A
命令,檢視叢集的命名空間。
將所做的變更套用在管理叢集的內容中:
kubectl apply -f csi-driver-addon-manifest.yaml
取消設定以下環境變數和功能旗標:
unset _TKG_CLUSTER_FORCE_ROLE
unset FILTER_BY_ADDON_TYPE
unset NAMESPACE
unset DRY_RUN_MODE
tanzu config set features.cluster.allow-legacy-cluster false
如果叢集在此之前未安裝 Azure Disk CSI 驅動程式,請在將 Tanzu Kubernetes Grid 安裝架構升級到 v2.2+ 後,遵循此程序進行安裝。
匯出以下環境變數,並設定功能旗標:
export _TKG_CLUSTER_FORCE_ROLE="management"
export FILTER_BY_ADDON_TYPE="csi/azuredisk-csi-driver"
export NAMESPACE="tkg-system"
export DRY_RUN_MODE="legacy"
tanzu config set features.cluster.allow-legacy-cluster true
在上面的範例中,將 NAMESPACE
設定為叢集的命名空間 tkg-system
。
針對使用 CSI 儲存區的每個工作負載叢集:
產生 CSI 驅動程式資訊清單:
tanzu cl create ${TARGET_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
其中,TARGET_CLUSTER_NAME
是您在其中安裝了 CSI 驅動程式的叢集名稱。
在 csi-driver-addon-manifest.yaml
中,以工作負載叢集的命名空間來更新中繼資料中的密碼命名空間。使用 kubectl get cluster -A
命令,檢視叢集的命名空間。
將所做的變更套用在管理叢集的內容中:
kubectl apply -f csi-driver-addon-manifest.yaml
取消設定以下環境變數和功能旗標:
unset _TKG_CLUSTER_FORCE_ROLE
unset FILTER_BY_ADDON_TYPE
unset NAMESPACE
unset DRY_RUN_MODE
tanzu config set features.cluster.allow-legacy-cluster false
針對使用 CSI 儲存區的管理叢集:
匯出以下環境變數:
export _TKG_CLUSTER_FORCE_ROLE="management"
export FILTER_BY_ADDON_TYPE="csi/azuredisk-csi-driver"
export NAMESPACE="tkg-system"
export DRY_RUN_MODE="legacy"
tanzu config set features.cluster.allow-legacy-cluster true
在上面的範例中,將 NAMESPACE
設定為叢集的命名空間 tkg-system
。
產生 CSI 驅動程式資訊清單:
tanzu mc create ${MANAGEMENT_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
其中,MANAGEMENT_CLUSTER_NAME
是管理叢集的名稱。
在 csi-driver-addon-manifest.yaml
中,以管理叢集的命名空間來更新中繼資料中的密碼命名空間。使用 kubectl get cluster -A
命令,檢視叢集的命名空間。
將所做的變更套用在管理叢集的內容中:
kubectl apply -f csi-driver-addon-manifest.yaml
取消設定以下環境變數和功能旗標:
unset _TKG_CLUSTER_FORCE_ROLE
unset FILTER_BY_ADDON_TYPE
unset NAMESPACE
unset DRY_RUN_MODE
tanzu config set features.cluster.allow-legacy-cluster false
Tanzu Kubernetes Grid 升級後安裝 Azure File CSI 驅動程式
如果叢集在此之前未安裝 Azure File CSI 驅動程式,請在將 Tanzu Kubernetes Grid 安裝架構升級到 v2.2+ 後,遵循此程序進行安裝。
匯出以下環境變數,並設定功能旗標:
export _TKG_CLUSTER_FORCE_ROLE="management"
export FILTER_BY_ADDON_TYPE="csi/azurefile-csi-driver"
export NAMESPACE="tkg-system"
export DRY_RUN_MODE="legacy"
tanzu config set features.cluster.allow-legacy-cluster true
在上面的範例中,將 NAMESPACE
設定為叢集的命名空間 tkg-system
。
針對使用 CSI 儲存區的每個工作負載叢集:
產生 CSI 驅動程式資訊清單:
tanzu cl create ${TARGET_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
其中,TARGET_CLUSTER_NAME
是您在其中安裝了 CSI 驅動程式的叢集名稱。
在 csi-driver-addon-manifest.yaml
中,以工作負載叢集的命名空間來更新中繼資料中的密碼命名空間。使用 kubectl get cluster -A
命令,檢視叢集的命名空間。
將所做的變更套用在管理叢集的內容中:
kubectl apply -f csi-driver-addon-manifest.yaml
取消設定以下環境變數和功能旗標:
unset _TKG_CLUSTER_FORCE_ROLE
unset FILTER_BY_ADDON_TYPE
unset NAMESPACE
unset DRY_RUN_MODE
tanzu config set features.cluster.allow-legacy-cluster false
針對使用 CSI 儲存區的管理叢集:
匯出以下環境變數:
export _TKG_CLUSTER_FORCE_ROLE="management"
export FILTER_BY_ADDON_TYPE="csi/azurefile-csi-driver"
export NAMESPACE="tkg-system"
export DRY_RUN_MODE="legacy"
tanzu config set features.cluster.allow-legacy-cluster true
在上面的範例中,將 NAMESPACE
設定為叢集的命名空間 tkg-system
。
產生 CSI 驅動程式資訊清單:
tanzu mc create ${MANAGEMENT_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
其中,MANAGEMENT_CLUSTER_NAME
是管理叢集的名稱。
在 csi-driver-addon-manifest.yaml
中,以管理叢集的命名空間來更新中繼資料中的密碼命名空間。使用 kubectl get cluster -A
命令,檢視叢集的命名空間。
將所做的變更套用在管理叢集的內容中:
kubectl apply -f csi-driver-addon-manifest.yaml
取消設定以下環境變數和功能旗標:
unset _TKG_CLUSTER_FORCE_ROLE
unset FILTER_BY_ADDON_TYPE
unset NAMESPACE
unset DRY_RUN_MODE
tanzu config set features.cluster.allow-legacy-cluster false
從 v2.1.x 到 v2.2.x 的主要升級,以及從 v2.2.x 到 v2.2.y 的修補程序升級,都需要執行此步驟。
如需如何升級當機復原和診斷的相關資訊,請參閱安裝或升級當機復原和診斷二進位檔。
檢查已升級的管理叢集,或向 Tanzu Mission Control 登錄它們。請參閱檢查並登錄新部署的獨立管理叢集。