本主題說明如何升級 Tanzu Kubernetes Grid (TKG) 工作負載叢集。對於具有獨立管理叢集的 TKG,您需要先升級會管理工作負載叢集的管理叢集。
重要
- 如果要升級在 vSphere 8 中使用主管部署的工作負載叢集,請參閱《使用 Tanzu CLI 來建立和管理 TKG 2.4 工作負載叢集》中的升級由主管部署的叢集 (僅限 vSphere 8)。
- 如要升級使用本機儲存的虛擬機器範本的 Edge 工作負載叢集,請參閱升級具有本機虛擬機器範本的 Edge 叢集。
- 如要升級從自訂叢集清單建立的工作負載叢集,請參閱升級自訂叢集。
- 獨立管理叢集和工作負載叢集會使用用戶端憑證來驗證用戶端。這些憑證的有效期為一年。若要更新憑證,請至少每年升級一次叢集。
重要Tanzu Kubernetes Grid v2.4.x 是支援升級 AWS 和 Azure 上現有 TKG 工作負載叢集的最後一個 TKG 版本。Tanzu Kubernetes Grid v2.5 中將移除在 AWS 和 Azure 上升級 TKG 工作負載叢集的功能。
從現在開始,VMware 建議您使用 Tanzu Mission Control 建立原生 AWS EKS 和 Azure AKS 叢集。但是,在 AWS 和 Azure 上升級現有 TKG 工作負載叢集仍完全獲 TKG v2.4.x 及以下版本支援。
有關詳細資訊,請參見《VMware Tanzu Kubernetes Grid v2.4 發行說明》中的〈棄用 AWS 和 Azure 上的 TKG 管理和工作負載叢集〉。
升級程序會升級工作負載叢集的所有控制平面和 worker 節點中的 Kubernetes 版本。
若要查看可用管理叢集的互動式清單,並選取管理您要升級的叢集的管理叢集,請執行 tanzu context use
命令:
tanzu context use
若要列出工作負載叢集,請執行:
tanzu cluster list --include-management-cluster -A
具有 --include-management-cluster -A
選項的 tanzu cluster list
命令會顯示正在管理叢集及其管理的所有叢集中執行的 Kubernetes 版本。在此範例中,您可以看到管理叢集已升級至 v1.27.5,但工作負載叢集執行的是舊版 Kubernetes。
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR
k8s-1-25-10-cluster default running 1/1 1/1 v1.25-10+vmware.1 <none> dev v1.25.10---vmware.1-tkg.1
k8s-1-26-5-cluster default running 1/1 1/1 1.26.5+vmware.1 <none> dev v1.26.5---vmware.1-tkg.1
mgmt-cluster tkg-system running 1/1 1/1 v1.27.5+vmware.1 management dev v1.27.5---vmware.1-tkg.1
若要探索管理叢集提供了哪些 Kubernetes 版本,請執行 tanzu kubernetes-release get
命令:
tanzu kubernetes-release get
輸出會列出可用來部署叢集的所有 Kubernetes 版本,且會提供以下附註:
COMPATIBLE
:目前的管理叢集可以使用此 Tanzu Kubernetes 版本 (tkr
) 來部署工作負載叢集。UPDATES AVAILABLE
:此 tkr
在其 Kubernetes 版本系列中不是最新的。執行此 tkr
版本的任何工作負載叢集都可以升級到較新的版本。例如:
NAME VERSION COMPATIBLE ACTIVE UPDATES AVAILABLE
v1.25.13---vmware.1-tiny.2-tkg.1 v1.25.13+vmware.1-tiny.2-tkg.1 True True
v1.25.13---vmware.2-tkg.1 v1.25.13+vmware.2-tkg.1 True True
v1.26.8---vmware.1-tiny.2-tkg.1 v1.26.8+vmware.1-tiny.2-tkg.1 True True
v1.26.8---vmware.2-tkg.1 v1.26.8+vmware.2-tkg.1 True True
v1.27.5---vmware.1-tiny.2-tkg.1 v1.27.5+vmware.1-tiny.2-tkg.1 True True
v1.27.5---vmware.1-tkg.1 v1.27.5+vmware.2-tkg.1 True True
若要探索您可以將執行舊版 tkr
的工作負載叢集升級到哪些較新的 tkr
版本,請執行 tanzu kubernetes-release available-upgrades get
命令,同時指定目前的 tkr
版本:
tanzu kubernetes-release available-upgrades get v1.26.5---vmware.2-tkg.1
此命令會列出對於正在執行指定版本的叢集,您可以將其升級至的所有可用 Kubernetes 版本。
您還可以透過在 tkr
命令中指定叢集名稱來探索特定工作負載叢集可用的 tanzu cluster available-upgrades get
版本:
tanzu cluster available-upgrades get k8s-1-26-5-cluster
此命令會列出與指定叢集相容的所有 Kubernetes 版本。
升級 tkr
版本時,不能跳過次要版本。例如,您無法將叢集從 v1.25.x 直接升級到 v1.27.x。必須先將 v1.25.x 叢集升級到 v1.26.x,再將叢集升級到 v1.26.x。
(Azure) 如果叢集正在 Azure 上執行,請在升級叢集之前,先設定 AZURE_CLIENT_SECRET
環境變數:
export AZURE_CLIENT_SECRET=YOUR-AZURE-CLIENT-SECRET
(vSphere) 使用節點 IPAM的任何叢集都需要在其 IP 集區中至少具有一個未指派的 IP 位址,然後才能升級。
要檢查叢集是否使用節點 IPAM,請在叢集物件的 addressesFromPools
spec.topology.variables
設定中尋找 network
:
kubectl -n NAMESPACE get cluster CLUSTER-NAME -o json | jq '.spec.topology.variables[] | select(.name=="network")'
其中,CLUSTER-NAME
和 NAMESPACE
是工作負載叢集的名稱和管理叢集命名空間。例如:
kubectl -n default get cluster my-work-cluster -o json | jq '.spec.topology.variables[] | select(.name=="network")'
{
"name": "network",
"value": {
"addressesFromPools": [
{
"apiGroup": "ipam.cluster.x-k8s.io",
"kind": "InClusterIPPool",
"name": "mgmt-cluster-nimbus"
}
],
"ipv6Primary": false
}
}
如要檢查叢集的 IP 集區是否具有未使用的位址,請將集區中的總數與目前配置的數量進行比較,如以下命令輸出的那樣:
kubectl -n NAMESPACE get ipaddress | grep POOL-NAME | wc -l
執行 tanzu cluster upgrade CLUSTER-NAME
命令,並輸入 y
加以確認。若要跳過確認步驟,請指定 --yes
選項。
若要將叢集升級到這個 Tanzu Kubernetes Grid 版本的預設 Kubernetes 版本,請執行 tanzu cluster upgrade
命令,且不包含任何選項。在此版本中,預設版本為 v1.27.5
。例如:
tanzu cluster upgrade k8s-1-26-5-cluster
如果叢集未在 default
命名空間中執行,請指定 --namespace
選項:
tanzu cluster upgrade CLUSTER-NAME --namespace NAMESPACE-NAME
如果升級在完成之前就已逾時,請再次執行 tanzu cluster upgrade
,並指定 --timeout
選項,且其值大於預設值 30 分鐘:
tanzu cluster upgrade CLUSTER-NAME --timeout 45m0s
重要作業在 Azure 上的執行時間有時比在其他平台上還久。如果要升級 Azure 上的叢集,請定期設定
--timeout
選項,以避免失敗。
如果您 IaaS 帳戶中有多個基礎虛擬機器映像的 Kubernetes 版本與您要升級成的版本相同,請使用 --os-name
選項來指定您要的作業系統。如需詳細資訊,請參閱在叢集升級期間選取作業系統。
例如,在 vSphere 上,如果您同時上傳了使用 Kubernetes v1.27.5 的 Photon 和 Ubuntu OVA 範本,請指定 --os-name ubuntu
,以升級要在 Ubuntu 上執行的工作負載叢集。
tanzu cluster upgrade CLUSTER-NAME --os-name ubuntu
由於您不能略過 tkr
的次要版本,如果您嘗試升級的叢集在預設版本後面有多個次要版本,升級命令將失敗。例如,您無法直接從 v1.25.x 升級到 v1.27.x。如果您要將叢集升級到的版本,並不是這個 Tanzu Kubernetes Grid 版本的 Kubernetes 預設版本,請指定 --tkr
選項,並在其中指定所選版本的 NAME
,如上面的 tanzu kubernetes-release get
所列。例如,如要將叢集 k8s-1-24-11-cluster
從 v1.25.13 升級至 v1.26.8。
tanzu cluster upgrade k8s-1-25-13-cluster --tkr v1.26.8---vmware.1-tkg.1
升級完成後,請執行 tanzu cluster list
命令,以檢查工作負載叢集是否已升級:
tanzu cluster list --include-management-cluster -A
重新產生管理員 kubeconfig
:
tanzu cluster kubeconfig get CLUSTER-NAME --admin
其中,CLUSTER-NAME
是工作負載叢集的名稱。
重要如果在升級後不續訂
kubeconfig
,則在叢集過期後將無法存取該叢集。
如果使用 LDAP 或 OIDC 身分識別提供者,請確認您可以使用 kubectl
來驗證叢集。例如:
kubectl get pods -A --kubeconfig my-cluster-credentials
升級正在工作負載叢集上執行的任何 CLI 管理的套件,例如 Contour、Fluent Bit 或 Prometheus。如需升級 CLI 管理的套件的詳細資訊,請參閱更新套件。
重要如果已在工作負載叢集上安裝 Prometheus,並將工作負載叢集升級到 Kubernetes v1.25,則必須至少將 Prometheus 升級到版本
2.37.0+vmware.3-tkg.1
。Prometheus 軟體套件的早期版本 (例如版本2.37.0+vmware.1-tkg.1
) 與 Kubernetes 1.25 不相容。
您無法使用 tanzu cluster upgrade
命令升級具有本機虛擬機器範本的 Edge 工作負載叢集的 Kubernetes 版本,如上方指定本機虛擬機器範本中所述。
但可以升級 Edge 工作負載叢集的 Kubernetes 版本,如下所示:
將新虛擬機器範本上傳到本機 vCenter 並記錄其詳細目錄路徑,例如 /dc0/vm/ubuntu-2004-kube-v1.27.5+vmware.1-tkg.1
。
編輯要升級的 Cluster
物件的資訊清單:
kubectl edit cluster CLUSTER-NAME
其中,CLUSTER-NAME
是叢集的名稱
在 spec.topology
之下更新以下內容:
version
以反映新的 Kubernetes 版本。vcenter.template
值設為新本機範本的詳細目錄路徑,以在叢集範圍內或在單個機器部署下進行更新。儲存並退出以套用新的 Cluster
物件設定。
現在,您可以繼續使用 Tanzu CLI 來管理叢集。如需詳細資訊,請參閱使用 Tanzu CLI 來建立和管理 TKG 2.4 工作負載叢集。