AKS クラスター作成に関する基本的なトラブルシューティング
この記事では、Microsoft Azure Kubernetes Service (AKS) クラスターを正常に作成またはデプロイできない場合に使用する基本的なトラブルシューティング方法について説明します。
前提条件
Azure CLI (バージョン 2.0.59 以降のバージョン)。
Kubernetes kubectl ツール。 Azure CLI を使用して kubectl をインストールするには、 az aks install-cli コマンドを 実行します。
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 の場合は、トラブルシューティングに役立つクラスター分析情報を生成できます。 この機能にアクセスするには、次の手順に従います。
Azure portalで、Kubernetes サービスを検索して選択します。
AKS クラスターの名前を選択します。
AKS クラスター ページのナビゲーション ウィンドウで、[ 問題の診断と解決] を選択します。
[ 問題の診断と解決 ] ページで、[ クラスター分析情報 ] リンクを選択します。 クラスター分析情報ツールはクラスターを分析し、[Cluster Insights] ページの [監視とソリューション] セクションでその結果の一覧を提供します。
いずれかの結果を選択して、問題とその考えられる解決策に関する詳細情報を表示します。
Azure portalでリソースを表示する
Azure portalでは、クラスターの作成時に作成されたリソースを表示できます。 通常、これらのリソースは、MC_で始まるリソース グループ内 にあります。 マネージド クラスター リソース グループには、 MC_MyResourceGroup_MyManagedCluster_<location-code> などの名前が付く場合があります。 ただし、カスタムマネージド クラスター リソース グループを使用してクラスターを構築した場合、名前が異なる場合があります。
リソース グループを見つけるには、Azure portalで [リソース グループ] を検索して選択し、クラスターが作成されたリソース グループを選択します。 リソース リストは、リソース グループの [概要 ] ページに表示されます。
警告
MC_ リソース グループ内のリソースは変更しないことをお勧めします。 このアクションにより、AKS クラスターに望ましくない影響が生じる可能性があります。
仮想マシン スケール セットの状態を確認するには、リソース グループのリソースの一覧でスケール セット名を選択します。 aks-nodepool1-12345678-vmss に似た名前があり、仮想マシン スケール セットの Type 値を持つ場合があります。 スケール セットの状態はノード プールの [概要] ページの上部に表示され、詳細は Essentials 見出しに表示されます。 デプロイが失敗した場合、表示される状態は [失敗] です。
すべてのリソースについて、詳細を確認して、デプロイが失敗した理由について理解を深めることができます。 スケール セットの場合は、[ 失敗した 状態] テキストを選択して、エラーの詳細を表示できます。 詳細は、 Status、 Level、および 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 フィードバック コミュニティに製品フィードバックを送信することもできます。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示