使用 CLI 升級直接連線的 Azure Arc 資料控制器
本文說明如何使用 Azure CLI (az
) 升級直接連線且已啟用 Azure Arc 的資料控制器。
在資料控制器升級期間,可能會升級部分的資料控制平面,例如自訂資源定義 (CRD) 和容器。 資料控制器的升級不會造成資料服務 (SQL 受控理執行個體或 PostgreSQL 伺服器) 停機。
必要條件
您需要具有 imageTag v1.0.0_2021-07-30 或更新版本的直接連線資料控制器。
若要檢查版本,請執行:
kubectl get datacontrollers -n <namespace> -o custom-columns=BUILD:.spec.docker.imageTag
安裝工具
您必須先安裝下列項目,才能繼續進行本文中的工作:
本文中的範例會使用角括弧 < ... >
來識別您需要在執行指令碼之前取代的值。 取代括弧和括弧內的值。
arcdata
延伸模組與映像版本相關。 檢查您是否有正確的 arcdata
延伸模組版本,而此版本對應至版本記錄中您想要升級至的映像版本。
檢視可用的映像並選擇版本
使用下列命令提取資料控制器的可用映像清單:
az arcdata dc list-upgrades --k8s-namespace <namespace>
上述命令會傳回類似下列範例的輸出:
Found 2 valid versions. The current datacontroller version is v1.0.0_2021-07-30.
v1.1.0_2021-11-02
v1.0.0_2021-07-30
升級資料控制器
本節說明如何升級直接連線的資料控制器。
注意
某些資料服務層級和模式已正式推出,有些則處於預覽狀態。 如果您在相同的資料控制器上安裝 GA 和預覽服務,則無法就地升級。 若要升級,請刪除所有非 GA 資料庫執行個體。 您可以在 [版本資訊] 中找到正式推出和預覽服務的清單。
如需支援的升級路徑,請參閱升級已啟用 Azure Arc 的資料服務。
驗證
您必須連線並驗證 Kubernetes 叢集,並在開始升級 Azure Arc 資料控制器之前選取現有的 Kubernetes 內容。
kubectl config use-context <Kubernetes cluster name>
升級資料控制器
您可以先執行試執行。 試執行會驗證登錄是否存在、版本結構描述,以及私人存放庫授權權杖 (使用時)。 若要執行試執行,請使用 az arcdata dc upgrade
命令中的 --dry-run
參數。 例如:
az arcdata dc upgrade --resource-group <resource group> --name <data controller name> --desired-version <version> --dry-run [--no-wait]
上述命令的輸出為:
Preparing to upgrade dc arcdc in namespace arc to version <version-tag>.
****Dry Run****
Arcdata Control Plane would be upgraded to: <version-tag>
升級 Arc 資料控制器延伸模組之後,請執行 az arcdata dc upgrade
命令,並使用 --desired-version
指定映像標籤。
az arcdata dc upgrade --resource-group <resource group> --name <data controller name> --desired-version <version> [--no-wait]
範例:
az arcdata dc upgrade --resource-group rg-arcds --name dc01 --desired-version v1.7.0_2022-05-24 [--no-wait]
監視升級狀態
您可以使用 CLI 來監視升級進度。
CLI
az arcdata dc status show --resource-group <resource group>
升級流程分為兩部分。 首先,控制器會升級,然後升級監視堆疊。 升級完成時,輸出將會是:
Ready
疑難排解
當所需的版本設定為特定版本時,啟動載入器作業會嘗試升級至該版本,直到成功為止。 如果升級成功,規格的 RunningVersion
屬性會更新為新版本。 升級可能會失敗,例如不正確的映像標籤、無法連線至登錄或存放庫、配置給容器的 CPU 或記憶體不足,或儲存體不足。
執行下列命令,以查看是否有任何 Pod 顯示
Error
狀態或有大量重新啟動:kubectl get pods --namespace <namespace>
若要查看事件以了解是否發生錯誤,請執行
kubectl describe pod <pod name> --namespace <namespace>
若要取得 Pod 中的容器清單,請執行
kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
若要取得容器的記錄,請執行
kubectl logs <pod name> <container name> --namespace <namespace>
若要檢視常見的錯誤以及如何進行疑難排解,請移至針對資源進行疑難排解。