次の方法で共有


間接的に接続された Azure Arc 対応データ コントローラーを Kubernetes ツールを使用してアップグレードする

この記事では、Kubernetes ツールを使用して、間接的に接続された Azure Arc 対応データ コントローラーをアップグレードする方法について説明します。

データ コントローラーのアップグレード中に、カスタム リソース定義 (CRD) やコンテナーなどのデータ コントロール プレーンの一部をアップグレードできます。 データ コントローラーをアップグレードしても、データ サービス (SQL Managed Instance または PostgreSQL サーバー) のダウンタイムは発生しません。

この記事では、次のために .yaml ファイルを適用します。

  1. アップグレードを実行するためのサービス アカウントを作成します。
  2. ブートストラップをアップグレードします。
  3. データ コントローラーをアップグレードします。

Note

一部のデータ サービス レベルとモードは一般提供段階であり、一部はプレビュー段階です。 同じデータ コントローラーに GA サービスとプレビュー サービスをインストールしている場合、インプレース アップグレードはできません。 アップグレードするには、GA でないすべてのデータベース インスタンスを削除します。 一般公開されているサービスとプレビュー サービスの一覧は、リリース ノートで確認できます。

前提条件

データ コントローラーのアップグレードを開始する前に、以下を実施する必要があります。

  • Kubernetes クラスターに接続して認証すること
  • 既存の Kubernetes コンテキストを選択していること

imageTag: v1.0.0_2021-07-30 以上のデータ コントローラーが間接的に接続されている必要があります。

ツールをインストールする

Kubernetes ツールを使用してデータ コントローラーをアップグレードするには、Kubernetes ツールがインストールされている必要があります。

この記事の例では kubectl を使用しますが、Kubernetes ダッシュボード、oc、helm などの Kubernetes の他のツールや 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>
...

データ コントローラーをアップグレードする

このセクションでは、間接的に接続されたデータ コントローラーをアップグレードする方法について説明します。

Note

一部のデータ サービス レベルとモードは一般提供段階であり、一部はプレビュー段階です。 同じデータ コントローラーに GA サービスとプレビュー サービスをインストールしている場合、インプレース アップグレードはできません。 アップグレードするには、GA でないすべてのデータベース インスタンスを削除します。 一般公開されているサービスとプレビュー サービスの一覧は、リリース ノートで確認できます。

サポートされているアップグレード パスについては、「Azure Arc 対応データ サービスのアップグレード」を参照してください。

アップグレード

データ コントローラーのアップグレードを開始する前に、Kubernetes クラスターに接続して認証し、既存の Kubernetes コンテキストを選択しておく必要があります。

アップグレードを実行するためのサービス アカウントを作成する

重要

サービス アカウント、ロール バインド、クラスター ロール、クラスター ロール バインド、およびサービス アカウントに付与されているすべての RBAC アクセス許可を作成するには、Kubernetes のアクセス許可が必要です。

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

アップグレードは 2 つの部分からなるプロセスです。 最初にコントローラーがアップグレードされ、次に監視スタックがアップグレードされます。 アップグレード中に、状態を表示するには 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. 次のコマンドを実行して、いずれかのポッドで Error 状態が表示されているか、または再起動回数が多くなっているかを確認します。

    kubectl get pods --namespace <namespace>
    
  2. イベントを調べてエラーがあるかどうかを確認するには、以下を実行します

    kubectl describe pod <pod name> --namespace <namespace>
    
  3. ポッド内のコンテナーの一覧を取得するには、以下を実行します

    kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
    
  4. コンテナーのログを取得するには、以下を実行します

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

一般的なエラーとそのトラブルシューティング方法を確認するには、「トラブルシューティング リソース」を参照してください。