AKS クラスター作成に関する基本的なトラブルシューティング

この記事では、Microsoft Azure Kubernetes Service (AKS) クラスターを正常に作成またはデプロイできない場合に使用する基本的なトラブルシューティング方法について説明します。

前提条件

Azure CLI からエラーを表示する

Azure CLI を使用してクラスターを作成すると、操作が失敗した場合にエラーが出力として記録されます。 Bash コンソールにコマンド、ユーザー入力、および操作の出力が表示される方法を次に示します。

$ az aks create --resource-group myResourceGroup \
> --name MyManagedCluster \
> --load-balancer-sku standard \
> --vnet-subnet-id /subscriptions/01234567-89ab-cdef-0123-456789abcdef/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/aks_demo_vnet/subnets/AKS

It is highly recommended to use USER assigned identity (option --assign-identity) when you want to bring you own subnet, which will have no latency for the role assignment to take effect. When you SYSTEM assigned identity, azure-cli will grant Network Contributor role to the system assigned identity after the cluster is created, and the role assignment will take some time to take effect, see https://learn.microsoft.com/azure/aks/use-managed-identity, proceed to create cluster with system assigned identity? (y/N): y

(ControlPlaneAddOnsNotReady) Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj

Code: ControlPlaneAddOnsNotReady

Message: Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj

これらのエラーには、多くの場合、クラスターの作成で問題が発生した内容の詳細な説明が含まれており、詳細を含む記事へのリンクが提供されます。 さらに、Azure CLI 操作によって生成されるエラーに基づいて、トラブルシューティングに関する記事を参照として使用できます。

Azure portalでエラーの詳細を表示する

Azure portalのエラーの詳細を表示するには、Azure アクティビティ ログを調べます。 Azure portalでアクティビティ ログの一覧を見つけるには、アクティビティ ログを検索します。 または、[ 通知 ] (ベル アイコン) を選択し、 アクティビティ ログで [その他のイベント] を選択します。

[アクティビティ ログ] ページのログの一覧には、操作名列の値が Create または Update Managed Cluster という名前の行エントリが含まれています。 列値 によって開始される 対応するイベントは、職場または学校アカウントの名前に設定されます。 操作が成功した場合は、[ 状態] 列の値に [Accepted]\(受け入れ済み\) と表示されます。 次の操作名など、クラスター コンポーネントを作成するためのサブ操作エントリも表示されます。

  • ルート テーブルの作成または更新
  • ネットワーク セキュリティ グループを作成または更新する
  • ユーザー割り当て ID の作成を更新する
  • Load Balancerの作成または更新
  • パブリック IP アドレスを作成または更新する
  • ロールの割り当てを作成する
  • リソース グループを更新する

これらのサブ操作エントリでは、[ 状態] の値は [成功] で、フィールド によって開始されたイベントAzureContainerService に設定されます。

代わりにエラーが発生した場合はどうすればよいですか? その場合、[ マネージド クラスターの作成または更新 ] 操作 の [状態] フィールドに [失敗] と表示されます。 クラスター コンポーネントを作成する操作とは異なり、ここでは、失敗した操作エントリを展開して、サブ操作エントリを確認する必要があります。 一般的なサブ操作名は、"監査" ポリシー アクションや 'auditIfNotExists' ポリシー アクションなどのポリシー アクションです。一部のサブ操作は、成功したことを示し続けます。

さらに調査するには、失敗したサブ操作のいずれかを選択します。 サイド ウィンドウが開き、サブ操作に関する詳細情報を確認できます。 [概要]、[JSON]、[変更履歴] などのフィールドの値のトラブルシューティングを行うことができます。 JSON フィールドには、エラーの出力テキストが JSON 形式で含まれており、通常、最も役立つ情報が提供されます。

クラスター分析情報を表示する

クラスターはAzure portalで作成され、そこに表示されていますか? これが true の場合は、トラブルシューティングに役立つクラスター分析情報を生成できます。 この機能にアクセスするには、次の手順に従います。

  1. Azure portalでKubernetes サービスを検索して選択します。

  2. AKS クラスターの名前を選択します。

  3. AKS クラスター ページのナビゲーション ウィンドウで、[ 問題の診断と解決] を選択します。

  4. [ 問題の診断と解決 ] ページで、[ クラスター分析情報 ] リンクを選択します。 クラスター分析情報ツールはクラスターを分析し、[Cluster Insights] ページの [監視とソリューション] セクションでその結果の一覧を提供します。

  5. いずれかの結果を選択して、問題とその考えられる解決策に関する詳細情報を表示します。

Azure portalでリソースを表示する

Azure portalでは、クラスターの作成時に作成されたリソースを表示できます。 通常、これらのリソースは、MC_で始まるリソース グループ内 にあります。 マネージド クラスター リソース グループには、 MC_MyResourceGroup_MyManagedCluster_<location-code> などの名前が付く場合があります。 ただし、カスタムマネージド クラスター リソース グループを使用してクラスターを構築した場合、名前が異なる場合があります。

リソース グループを見つけるには、Azure portalで [リソース グループ] を検索して選択し、クラスターが作成されたリソース グループを選択します。 リソース リストは、リソース グループの [概要 ] ページに表示されます。

警告

MC_ リソース グループ内のリソースは変更しないことをお勧めします。 このアクションにより、AKS クラスターに望ましくない影響が生じる可能性があります。

仮想マシン スケール セットの状態を確認するには、リソース グループのリソースの一覧でスケール セット名を選択します。 aks-nodepool1-12345678-vmss に似た名前があり、仮想マシン スケール セットType 値を持つ場合があります。 スケール セットの状態はノード プールの [概要] ページの上部に表示され、詳細は Essentials 見出しに表示されます。 デプロイが失敗した場合、表示される状態は [失敗] です

すべてのリソースについて、詳細を確認して、デプロイが失敗した理由について理解を深めることができます。 スケール セットの場合は、[ 失敗した 状態] テキストを選択して、エラーの詳細を表示できます。 詳細は、 StatusLevel、および Code 列を含む行にあります。 次の例は、列値の行を示しています。

Column 値の例
状態 プロビジョニングに失敗しました
レベル Error
コード ProvisioningState/failed/VMExtensionProvisioningError

行を選択すると、[ メッセージ ] フィールドが表示されます。 これには、そのエラーに関するさらに詳細な情報が含まれています。 たとえば、例の行の [メッセージ ] フィールドは、次のテキストで始まります。

拡張機能 'vmssCSE' を処理するときに、VM によってエラーが報告されました。 エラー メッセージ: "Enable failed: failed to execute command: command terminated with exit status=50 [stdout] [stderr] 0 0 0 --:

この情報を使用して、スケール セット内の VM が失敗し、終了状態 50 が生成されたと結論付けることができます。

注:

クラスターのデプロイが、これらのリソースが作成された時点に達しなかった場合は、Azure portal内のマネージド クラスター リソース グループを確認できない可能性があります。

Kubectl コマンドを使用する

クラスターのエラーのトラブルシューティングに役立つ別のオプションとして、「kubectl コマンド」と入力して、クラスターにデプロイされたリソースの詳細を取得します。 kubectl を使用するには、最初に AKS クラスターにサインインします。

az aks get-credentials --resource-group MyResourceGroup --name MyManagedCluster

障害の種類と発生したタイミングによっては、クラスターにサインインして詳細を取得できない場合があります。 ただし、一般に、クラスターが作成され、Azure portalに表示される場合は、サインインして kubectl コマンドを実行できるはずです。

クラスター ノードの表示 (kubectl get nodes)

ノードの状態を判断するための詳細を取得するには、 kubectl get nodes コマンドを入力してクラスター ノードを表示します。 この例では、クラスター内に報告するノードはありません。

$ kubectl get nodes

No resources found

システム名前空間のポッドを表示する (kubectl get pods)

kube-system 名前空間でポッドを表示することも、問題のトラブルシューティングに適した方法です。 このメソッドを使用すると、Kubernetes システム ポッドの状態を表示できます。 この例では、次のコマンドを kubectl get pods 入力します。

$ kubectl get pods -n kube-system
NAME                                  READY   STATUS    RESTARTS   AGE
coredns-845757d86-7xjqb               0/1     Pending   0          78m
coredns-autoscaler-5f85dc856b-mxkrj   0/1     Pending   0          77m
konnectivity-agent-67f7f5554f-nsw2g   0/1     Pending   0          77m
konnectivity-agent-8686cb54fd-xlsgk   0/1     Pending   0          65m
metrics-server-6bc97b47f7-dfhbr       0/1     Pending   0          77m

ポッドの状態を説明する (kubectl describe pod)

ポッドの状態を記述することで、構成の詳細と、ポッドで発生したすべてのイベントを表示できます。 kubectl describe pod コマンドを実行します。

$ kubectl describe pod coredns-845757d86-7xjqb -n kube-system
Name:                 coredns-845757d86-7xjqb
Namespace:            kube-system
Priority:             2000001000
Priority Class Name:  system-node-critical
Node:                 <none>
Labels:               k8s-app=kube-dns
                      kubernetes.io/cluster-service=true
                      pod-template-hash=845757d86
                      version=v20
...
Events:
  Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  24m (x1 over 25m)   default-scheduler  no nodes available to schedule pods
  Warning  FailedScheduling  29m (x57 over 84m)  default-scheduler  no nodes available to schedule pods

コマンド出力では、使用可能なノードがないため、ポッドをノードにデプロイできないことがわかります。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。