接続レジストリ拡張機能のトラブルシューティング
この記事では、Arc 対応 Kubernetes クラスターの接続レジストリ拡張機能をインストールまたは更新するときに受け取る一般的なエラー メッセージについて説明します。
接続レジストリ拡張機能のインストール方法
接続レジストリ拡張機能は、Helm チャートとしてリリースされ、Helm V3 によってインストールされます。 接続レジストリ拡張機能のすべてのコンポーネントは、connected-registry 名前空間にインストールされます。 次のコマンドを使って、拡張機能の状態を確認できます。
# get the extension status
az k8s-extension show --name <extension-name>
# check status of all pods of connected registry extension
kubectl get pod -n connected-registry
# get events of the extension
kubectl get events -n connected-registry --sort-by='.lastTimestamp'
一般的なエラー
エラー: 使用中の名前は再利用できません
このエラーは、指定した拡張機能名が既に存在することを意味します。 この名前が既に使用されている場合は、別の名前を使用する必要があります。
エラー: 終了中のため、名前空間 connected-registry に新しいコンテンツを作成できません
このエラーは、アンインストール操作が完了していないときに、別のインストール操作がトリガーされた場合に発生します。 他のアクションを実行する前に、az k8s-extension show
コマンドを実行して拡張機能のプロビジョニング状態をチェックし、拡張機能がアンインストールされていることを確認できます。
エラー: チャートのパスが見つからないためにダウンロードが失敗しました
このエラーは、指定した拡張機能のバージョンが間違っている場合に発生します。 指定したバージョンが存在することを確認する必要があります。 最新バージョンを使う場合は、--version
を指定する必要はありません。
一般的なシナリオ
シナリオ 1: インストールが失敗してもエラー メッセージが表示されない
拡張機能を作成または更新するときにエラー メッセージが生成された場合は、az k8s-extension list
コマンドを実行して、作成が失敗した箇所を調べることができます。
az k8s-extension list \
--resource-group <my-resource-group-name> \
--cluster-name <my-cluster-name> \
--cluster-type connectedClusters
解決策: クラスターの再起動、サービス プロバイダーの登録、接続レジストリの削除と再インストール
この問題を解決するには、次の方法を試してください。
Arc Kubernetes クラスターを再起動します。
KubernetesConfiguration サービス プロバイダーを登録します。
接続レジストリ拡張機能を強制的に削除し、再インストールします。
シナリオ 2: 対象の接続レジストリのバージョンが存在しない
接続レジストリ拡張機能をインストールして特定のバージョンを対象としようとすると、その接続レジストリのバージョンが存在しないことを示すエラー メッセージが表示されます。
解決策: サポートされている接続レジストリ バージョンの場合は、もう一度インストールします
拡張機能のインストールをもう一度試みます。 サポートされているバージョンの接続レジストリを使用していることを確認します。
一般的な問題
問題: 拡張機能の作成が実行中の状態でスタックする
可能性 1: 永続ボリューム要求 (PVC) に関する問題
- 接続レジストリ PVC の状態を確認する
kubectl get pvc -n connected-registry -o yaml connected-registry-pvc
"状態" の "フェーズ" の値は、"バインド済み" である必要があります。 "保留中" から変更されない場合は、拡張機能を削除します。
- 目的のストレージ クラスが、ストレージ クラスの一覧に含まれているかどうかを確認します。
kubectl get storageclass --all-namespaces
- そうでない場合は、拡張機能を再作成して追加します
--config pvc.storageClassName=”standard”`
- または、PVC のための十分なスペースがないことが問題である可能性があります。 パラメーターを使用して拡張機能を再作成する
--config pvc.storageRequest=”250Gi”`
可能性 2: 接続文字列が正しくない
- 接続レジストリ ポッドのログを確認します。
kubectl get pod -n connected-registry
- 接続レジストリ ポッドの名前 (例: "connected-registry-8d886cf7f-w4prp") をコピーし、次のコマンドに貼り付けます。
kubectl logs -n connected-registry connected-registry-8d886cf7f-w4prp
- 次のエラー メッセージが表示された場合、接続レジストリの接続文字列が正しくありません。
Response: '{"errors":[{"code":"UNAUTHORIZED","message":"Incorrect Password","detail":"Please visit https://aka.ms/acr#UNAUTHORIZED for more information."}]}'
- protected-settings-extension.json ファイルが作成されていることを確認する
cat protected-settings-extension.json
- 必要に応じて、protected-settings-extension.json を再生成する
cat << EOF > protected-settings-extension.json
{
"connectionString": "$(az acr connected-registry get-settings \
--name myconnectedregistry \
--registry myacrregistry \
--parent-protocol https \
--generate-password 1 \
--query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)"
}
EOF
- 新しい接続文字列を含むように、拡張機能を更新する
az k8s-extension update \
--cluster-name <myarck8scluster> \
--cluster-type connectedClusters \
--name <myconnectedregistry> \
-g <myresourcegroup> \
--config-protected-file protected-settings-extension.json
問題: 拡張機能が作成されたが、接続レジストリが 'オンライン' 状態でない
可能性 1: 以前の接続レジストリが非アクティブ化されていない
このシナリオは、一般的に、以前の接続レジストリ拡張機能が削除されており、同じ接続レジストリ用に新しく作成された場合に発生します。
- 接続レジストリ ポッドのログを確認します。
kubectl get pod -n connected-registry
- 接続レジストリ ポッドの名前 (例: "connected-registry-xxxxxxxxx-xxxxx") をコピーし、次のコマンドに貼り付けます。
kubectl logs -n connected-registry connected-registry-xxxxxxxxx-xxxxx
- 次のエラー メッセージが表示された場合は、接続レジストリを非アクティブ化する必要があります。
Response: '{"errors":[{"code":"ALREADY_ACTIVATED","message":"Failed to activate the connected registry as it is already activated by another instance. Only one instance is supported at any time.","detail":"Please visit https://aka.ms/acr#ALREADY_ACTIVATED for more information."}]}'
- 次のコマンドを実行して非アクティブ化します。
az acr connected-registry deactivate -n <myconnectedregistry> -r <mycontainerregistry>
数分後に、接続レジストリ ポッドが再作成され、エラーが表示されなくなります。
ログの有効化
- [az acr connected-registry update] コマンドを実行して、接続レジストリ拡張機能をデバッグ ログ レベルで更新します。
az acr connected-registry update --registry mycloudregistry --name myacrregistry --log-level debug
トラブルシューティングに役立つ次のログ レベルを適用できます。
[デバッグ] では、デバッグ目的で詳細な情報が提供されます。
[情報] では、デバッグ目的で一般情報が提供されます。
[警告] では、まだエラーではないが、アクションが実行されないとエラーになる可能性がある潜在的な問題が示されます。
[エラー] では、操作の完了を妨げるエラーがログに記録されます。
[なし] では、ログがオフになるため、ログ メッセージは書き込まれなくなります。
必要に応じてログ レベルを調整し、問題をトラブルシューティングします。
アクティブな選択では、接続レジストリに関する問題をデバッグするときにログの詳細度を調整するためのオプションがさらに提供されます。 次のオプションを使用できます。
接続レジストリ ログ レベルは、接続レジストリの操作に固有であり、接続レジストリが処理するメッセージの重大度を決定します。 この設定は、接続レジストリ自体のログ動作を管理するために使用されます。
--log-level は、インスタンスのログ レベルを設定します。 ログ レベルは、ロガーが処理するメッセージの重大度を決定します。 ログ レベルを設定すると、特定の重大度を下回るメッセージを除外できます。 たとえば、ログ レベルを [警告] に設定すると、ロガーは警告、エラー、重大の各メッセージを処理しますが、情報とデバッグのメッセージは無視します。
az cli ログ レベルは、Azure CLI の操作中の出力メッセージの詳細度を制御します。 Azure CLI (az) には、操作中の出力情報の量を制御するために調整できるログ レベルに関するいくつかの詳細オプションが用意されています。
--verbose では、ログの詳細度が向上します。 既定の設定よりも詳細な情報が提供されます。これは、問題を特定するのに役立ちます。
--debug は、完全なデバッグ ログを有効にします。 デバッグ ログでは、"詳細" レベルで提供されるすべての情報と、問題の診断を目的とした詳細など、最も詳細な情報が提供されます。