コンテナー レジストリへの接続を検証する
この記事はシリーズの一部です。 最初に概要をご覧ください。
Azure Kubernetes Service (AKS) クラスターにコンテナー化されたアプリケーションを正常にデプロイするには、クラスターとコンテナー レジストリの間の接続を検証することが不可欠です。 このステップでは、レジストリから必要なコンテナー イメージをプルするために必要なアクセス許可がワーカー ノードにあることを確認します。
症状を特定する
エージェント ノードで実行された kubelet によってポッド用のコンテナーが作成されるとき、ImagePullBackOff
エラーのために、1 つ以上のコンテナーが待機状態に陥る可能性があります。 ImagePullBackoff は、Kubernetes の一般的なエラー メッセージであり、パブリックまたはプライベート レジストリからの必要なコンテナー イメージのプルが失敗したことを示します。 ネットワーク接続の問題、正しくないイメージ名またはタグ、不十分なアクセス許可、資格情報の不足など、さまざまな要因がこのエラーの原因になる可能性があります。
状態の BackOff
の部分は、Kubernetes が後続の試行のたびに遅延を長くしながらイメージのプルを試み続けていることを示します。 遅延は、あらかじめ定められた制限 (通常、Kubernetes では 300 秒 (5 分) に設定されています) に達するまで徐々に長くなります。
レジストリとイメージ名が正しいことを再確認することが重要です。 さらに、適切なコンテナー レジストリからイメージをプルするために必要なアクセス許可が AKS クラスターにあることを確認します。
ロールの割り当て
コンテナー レジストリを既存の AKS クラスターにアタッチすると、レジストリに対する AcrPull ロールが、AKS クラスター内のエージェント プールに関連付けられている Microsoft Entra マネージド ID に自動的に割り当てられます。 詳しくは、Azure からの Container Registry での認証に関する記事をご覧ください。
Kubernetes クラスターの kubelet マネージド ID と、その現在のロール割り当てを取得するには、次のコマンドを実行します。
# Get the kubelet managed identity.
ASSIGNEE=$(az aks show -g $RESOURCE_GROUP -n $NAME --query identityProfile.kubeletidentity.clientId -o tsv)
az role assignment list --assignee $ASSIGNEE --all -o table
AcrPull
ロールを kubelet のマネージド ID に割り当てるには、次のコマンドを実行します。
AZURE_CONTAINER_REGISTRY_ID=$(az acr show --name <container-registry-name> --query id --output tsv)
az role assignment create --assignee $ASSIGNEE --scope $AZURE_CONTAINER_REGISTRY_ID --role acrpull
Container Registry に関する問題のトラブルシューティング
次のセクションでは、Azure コンテナー レジストリでネットワーク、サインイン、またはパフォーマンスの問題が発生する場合に参照できるガイドを示します。
ネットワークに関する問題のトラブルシューティング
仮想ネットワーク内またはファイアウォールやプロキシ サーバーの内側にある Azure コンテナー レジストリへのアクセスに関連する問題が発生する場合は、次の解決策を検討してください。
サインインに関する問題のトラブルシューティング
Azure コンテナー レジストリにサインインするときに認証と認可の問題が発生する場合は、次の解決策を検討してください。
- 環境での Docker の構成を調べる。
- 正しいレジストリ名を指定する。
- レジストリにアクセスするための資格情報を確認する。
- レジストリへのパブリック アクセスを構成する。
- レジストリへのサインインに関する問題のトラブルシューティングを行う。
- 資格情報の有効期限が切れていないことを確認します。
パフォーマンスの問題をトラブルシューティングする
Azure コンテナー レジストリでパフォーマンスの問題が発生する場合は、次の解決策を検討してください。
- アーティファクト キャッシュを有効にする。
- ネットワーク接続の速度を調べる。
- イメージ レイヤーの圧縮または抽出の速度に影響する可能性があるクライアント ハードウェアを検査する。
- レジストリ サービス レベルまたは環境で構成されている制限を確認する。
- 近くのリージョンのレプリカを使用してパフォーマンスが最適になるように geo レプリケートされるレジストリを構成する。
- 地理的に離れたレジストリ レプリカからのプル用に DNS 構成を最適化する。
これらのガイドは、AKS クラスターのシームレスなイメージの取得と、ワークロードの円滑な操作が行われるようにするのに役立ちます。
サード パーティのコンテナー レジストリを統合する
サード パーティのコンテナー レジストリを使うときは、AKS クラスターがコンテナー イメージに安全にアクセスできるように、レジストリに対する適切な ImagePullSecret
資格情報を作成する必要があります。 詳しくは、「イメージのプル シークレットを作成する」をご覧ください。 コンテナー レジストリへの接続を検証でき、デプロイの間に AKS クラスターが必要なコンテナー イメージを正常にプルできるように、正しいアクセス許可と資格情報を設定していることを確認します。 このベスト プラクティスは、Kubernetes でコンテナー化されたワークロードを円滑かつ確実に実行するのに役立ちます。
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパルの作成者:
- Paolo Salvatori | プリンシパル カスタマー エンジニア
- Francis Simy Nazareth | シニア テクニカル スペシャリスト
パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。