1. ホーム
  2. azure

[解決済み] コンテナにアンレディステータスがある」と表示される。Kubernetesで「[]」というエラーが発生する

2022-02-26 09:53:04

質問

AKSでKubernetes Podをデプロイしようとしています(Kubernetesは初めてなので、現段階ではコンテナを作成し、Kubernetesにデプロイして接続したいだけなのですが)。

私のYamlファイルは以下の通りです。

apiVersion: v1
kind: Pod
spec: 
  containers:
    - name: dockertest20190205080020
      image: dockertest20190205080020.azurecr.io    
      ports:
      - containerPort: 443
metadata: 
  name: my-test

Azure Container Registryでイメージを作成し、CLIによるとKubernetesにデプロイすることに成功しました。

デプロイ後、以下のコマンドを使用しました。

kubectl get service

そして、接続する外部IPがないと言われました。 そこで、試してみました。

kubectl describe pod my-test

その結果、以下のようなエラーが発生しました。

 Events:
   Warning  Failed   4m (x2221 over 8h)  kubelet, aks-nodepool1-27401563-2  Error: ImagePullBackOff
   Normal   BackOff  0s (x2242 over 8h)  kubelet, aks-nodepool1-27401563-2  Back-off pulling image "dockertest20190205080020.azurecr.io"

次に、デプロイメントを編集してみました。

kubectl edit pods my-test

というエラーが出ました。

message: 'containers with unready status: [dockertest20190205080020]'

次の診断ステップは何なのか、ちょっとわからないです。 コンテナまたはコンテナレジストリに問題があるような気がしますが、それが何であるかを判断する方法がわかりません。

解決方法は?

AKSはACRから画像を取得する権限を持っていません(これはデフォルトの動作です)。そのため、AKSに画像を取得する権限を与える必要があります。 リンク ):

#!/bin/bash

AKS_RESOURCE_GROUP=myAKSResourceGroup
AKS_CLUSTER_NAME=myAKSCluster
ACR_RESOURCE_GROUP=myACRResourceGroup
ACR_NAME=myACRRegistry

# Get the id of the service principal configured for AKS
CLIENT_ID=$(az aks show --resource-group $AKS_RESOURCE_GROUP --name $AKS_CLUSTER_NAME --query "servicePrincipalProfile.clientId" --output tsv)

# Get the ACR registry resource id
ACR_ID=$(az acr show --name $ACR_NAME --resource-group $ACR_RESOURCE_GROUP --query "id" --output tsv)

# Create role assignment
az role assignment create --assignee $CLIENT_ID --role acrpull --scope $ACR_ID

代替案として、docker login secret を使用する方法もあります (この記事でも言及されています)。

ACRでの作例画像。

画像名は

clrtacr.azurecr.io/dns:tag (最新の場合はタグなし)