共用方式為


使用 Kubernetes 工具來升級間接連線的已啟用 Azure Arc 的資料控制器

本文說明如何使用 Kubernetes 工具來升級間接連線的已啟用 Azure Arc 的資料控制器。

在資料控制器升級期間,可能會升級部分的資料控制平面,例如「自訂資源定義 (CRD)」和容器。 資料控制器的升級不會造成資料服務 (SQL 受控執行個體或 PostgreSQL 伺服器) 停機。

在本文中,您會將 .yaml 檔案套用至:

  1. 建立執行升級的服務帳戶。
  2. 升級啟動載入器。
  3. 升級資料控制器。

注意

某些資料服務層級和模式已正式推出,有些則處於預覽狀態。 如果您在相同的資料控制器上安裝 GA 和預覽服務,則無法就地升級。 若要升級,請刪除所有非 GA 資料庫執行個體。 您可以在 [版本資訊] 中找到正式推出和預覽服務的清單。

必要條件

開始升級資料控制器之前,您需要:

  • 連線並驗證 Kubernetes 叢集
  • 已選取現有 Kubernetes 內容

您需要具有 imageTag: v1.0.0_2021-07-30 或更新版本的間接連線資料控制器。

安裝工具

若要使用 Kubernetes 工具來升級資料控制器,您必須安裝 Kubernetes 工具。

本文中的範例會使用 kubectl,但您可以使用類似的方法搭配其他 Kubernetes 工具,例如 Kubernetes 儀表板、oc 或 Helm (如果您熟悉這些工具和 Kubernetes yaml/json)。

安裝 kubectl 工具

檢視可用的映像並選擇版本

使用下列命令提取資料控制器的可用映像清單:

az arcdata dc list-upgrades --k8s-namespace <namespace>

上述命令會傳回類似下列範例的輸出:

Found 2 valid versions.  The current datacontroller version is <current-version>.
<available-version>
...

升級資料控制器

本節說明如何升級間接連線的資料控制器。

注意

某些資料服務層級和模式已正式推出,有些則處於預覽狀態。 如果您在相同的資料控制器上安裝 GA 和預覽服務,則無法就地升級。 若要升級,請刪除所有非 GA 資料庫執行個體。 您可以在 [版本資訊] 中找到正式推出和預覽服務的清單。

如需支援的升級路徑,請參閱升級已啟用 Azure Arc 的資料服務

升級

您必須連線並驗證 Kubernetes 叢集,並在開始升級資料控制器之前選取現有的 Kubernetes 內容。

建立執行升級的服務帳戶

重要

需要 Kubernetes 權限才能建立服務帳戶、角色繫結、叢集角色、叢集角色繫結,以及授與服務帳戶的所有 RBAC 權限。

儲存 arcdata-deployer.yaml 的複本,並將檔案中的預留位置 {{NAMESPACE}} 換成資料控制器的命名空間,例如:arc。 執行下列命令,使用已編輯的檔案建立部署器服務帳戶。

kubectl apply --namespace arc -f arcdata-deployer.yaml

升級啟動載入器

下列命令會建立作業來升級啟動載入器和相關的 Kubernetes 物件。

重要

下列命令中的 yaml 檔案預設為 mcr.microsoft.com/arcdata。 請儲存 yaml 檔案的複本,並視需要將其更新為使用不同的登錄/存放庫。

kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/bootstrapper-upgrade-job.yaml

升級資料控制器

下列命令會修補映射標籤,以便升級資料控制器。

kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/data-controller-upgrade.yaml

監視升級狀態

您可以使用 kubectl 來監視升級進度。

kubectl

kubectl get datacontrollers --namespace <namespace> -w
kubectl get monitors --namespace <namespace> -w

升級流程分為兩部分。 控制器會先升級,接著監視堆疊也會跟著升級。 在升級期間,請使用 kubectl get monitors -n <namespace> -w 來檢視狀態。 輸出將是:

NAME           STATUS     AGE
monitorstack   Updating   36m
monitorstack   Updating   36m
monitorstack   Updating   39m
monitorstack   Updating   39m
monitorstack   Updating   41m
monitorstack   Ready      41m

疑難排解

當所需的版本設定為特定版本時,啟動載入器作業會嘗試升級至該版本,直到成功為止。 如果升級成功,規格的 RunningVersion 屬性會更新為新版本。 升級可能會失敗,例如不正確的映像標籤、無法連線至登錄或存放庫、配置給容器的 CPU 或記憶體不足,或儲存體不足。

  1. 執行下列命令,以查看是否有任何 Pod 顯示 Error 狀態或有大量重新啟動:

    kubectl get pods --namespace <namespace>
    
  2. 若要查看事件以了解是否發生錯誤,請執行

    kubectl describe pod <pod name> --namespace <namespace>
    
  3. 若要取得 Pod 中的容器清單,請執行

    kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
    
  4. 若要取得容器的記錄,請執行

    kubectl logs <pod name> <container name> --namespace <namespace>
    

若要檢視常見的錯誤以及如何進行疑難排解,請移至針對資源進行疑難排解