この記事はシリーズの一部です。 概要から始めます。
Kubernetes ワークロードが最適に実行されるように、Kubernetes ワークロードの正常性とパフォーマンスを監視することが重要です。 Azure Kubernetes Service (AKS) には、デプロイ、 DaemonSet 機能、サービスの正常性とパフォーマンスを確認するために使用できるいくつかのツールがあります。
ツール
すべてのデプロイと DaemonSet 機能が実行されているかどうかを判断することが重要です。 この記事では、次を使用して、 準備完了 状態と 使用可能な 状態のレプリカが予想されるレプリカ数と一致するかどうかを判断する方法について説明します。
- Azure ポータル
- Azure Monitor のコンテナー分析情報機能。
- kubectl コマンド ライン ツール。
- Prometheus と Grafana。
Azure ポータル
Azure portal を使用して、ワークロード内の次のコンポーネントの正常性を確認できます。 詳細については、「 Azure portal から Kubernetes リソースにアクセスする」を参照してください。
デプロイ、 ReplicaSet、 StatefulSet、および DaemonSet
準備完了状態にあるレプリカの数が、目的のレプリカの数と一致することを確認します。 ポータルには次の情報が表示されます。
現在使用可能で、トラフィックを処理する準備ができているレプリカの数。 これらのレプリカは、ワーカー ノードに正常にスケジュールされ、スタートアップ プロセスが完了し、準備チェックに合格しました。
デプロイに指定されたレプリカの数、またはデプロイが維持することを目的とするレプリカの数。 Kubernetes デプロイ コントローラーは、デプロイの状態を常に監視し、実際のレプリカ数が目的の数と一致することを確認します。
サービスとイングレス
すべてのサービスとイングレスの状態が 問題がないことを 確認します。
Storage
すべての永続ボリューム要求と永続ボリュームの状態が バインド されていることを確認します。
コンテナーの分析情報
Container Insights は 、AKS にデプロイされるか 、Azure Arc 対応 Kubernetes によって管理されるコンテナー ワークロードの監視機能を提供する Monitor の機能です。 この機能は、コントローラー、ノード、コンテナーからメモリとプロセッサのメトリックなどのパフォーマンスと正常性の情報を収集します。 また、分析用のコンテナー ログもキャプチャします。
重要
Container Insights はメトリック収集に使用できますが、 Prometheus 用の Azure Monitor マネージド サービス を使用してメトリック収集を改善し、ログ収集にのみ Container Insights を使用することをお勧めします。
Container Insights を使用して収集されたデータを分析し、クラスター内のコンポーネントのパフォーマンスと動作を理解できます。 Container Insights を使用する方法を次に示します。
- 各ノード上のコンテナーのプロセッサとメモリ使用量を分析して、リソースのボトルネックを特定します。
- コンテナー インスタンス内のコンテナー グループとそのコンテナーのパフォーマンスを確認します。
- コントローラーまたはポッド内のコンテナーの場所を識別して、コントローラーまたはポッドの全体的なパフォーマンスを確認します。
- ポッドの標準プロセスのサポートとは無関係なホスト上のワークロードのリソース使用量を確認します。
- 容量のニーズと最大負荷を判断するために、クラスターが平均負荷と高負荷下でどのように動作するかを理解します。
- ライブ コンテナーのログとメトリックにアクセスして、問題をリアルタイムでトラブルシューティングします。
- アラートを設定して、しきい値を超える CPU とメモリの使用量、およびクラスターの正常性状態の変化を通知または記録します。
Azure portal の Container Insights には、AKS クラスターの正常性とパフォーマンスを監視および分析するためのツールが用意されています。
- クラスター: CPU とメモリの使用量、ポッドとノードの数、ネットワーク トラフィックなどのメトリックを含む、AKS クラスターの概要を示します。
- レポート: クラスターのパフォーマンス、リソースの使用状況、ポッドの正常性、コンテナーの分析情報を視覚化して分析するための事前構築済みレポートを提供します。
- ノード: CPU とメモリの使用量、ディスクとネットワークの I/O、ノードの状態と状態など、クラスター内のノードに関する詳細情報を提供します。
- コントローラー: AKS クラスター内の Kubernetes コントローラーを可視化し、インスタンスの数、現在の状態、コントローラー操作の状態を表示します。
- コンテナー: リソースの使用状況、再起動、ライフサイクル イベントなど、AKS クラスターで実行されているコンテナーに関する分析情報を提供します。
- ライブ ログ: 実行中のコンテナーからのログ イベントのライブ ストリームを提供します。これにより、アプリケーションを監視およびトラブルシューティングするためのコンテナー ログをリアルタイムで表示できます。
詳細については、次のリソースを参照してください。
- コンテナーの分析情報を使用して Kubernetes クラスターのパフォーマンスを監視する
- コンテナー分析情報を使用して GPU 監視を構成する
- Azure ネットワーク ポリシー マネージャーを使用してネットワーク構成を監視および視覚化する
- コンテナーの分析情報を使用してデプロイと HPA メトリックを監視する
- 永続ボリューム (PV) メトリックを監視する
- Syslog を使用してセキュリティを監視する
- コンテナー分析情報のレポート
- コンテナー分析情報によって収集されるメトリック
- Kubernetes のログ、イベント、ポッドのメトリックをリアルタイムで表示する
- クラスター メトリックをリアルタイムで表示する
コマンド ライン ツール
ワークロードの状態を確認するには、kubectl コマンドライン ツールを使用して、Kubernetes API を介して Kubernetes クラスターのコントロール プレーンと通信できます。
ポッド
すべての名前空間で実行されているポッドを一覧表示するには、次のコマンドを実行します。
kubectl get pod -A
コマンドからの出力で、 READY 列はポッドのコンテナーの準備状態に関する重要な情報を提供します。
最初の数値は、現在 準備完了 状態にあるコンテナーの数を示します。 これらのコンテナーは準備プローブに合格し、受信トラフィックを処理する準備が整いました。 2 番目の数値は、準備状態に関係なく、ポッド内で定義されているコンテナーの合計数を表します。 これには、準備ができているコンテナーと、まだ初期化中または問題が発生しているコンテナーが含まれます。
最初の数 (準備完了コンテナー) がポッドの 2 番目の数 (コンテナーの合計) と一致していることを確認します。 異なる場合は、一部のコンテナーの準備ができていないか、準備 完了状態に 到達できない問題が発生する可能性があります。
デプロイ、 StatefulSet、 DaemonSet、および ReplicaSet
次のコマンドを実行して、すべての名前空間の デプロイ を取得します。
kubectl get deploy -A
kubectl get deploy コマンドの出力の READY 列の数値は、デプロイ内のレプリカの現在の準備状態を示します。
最初の数は、トラフィックを処理できる状態で使用可能なレプリカの数を表します。 これらのレプリカは正常に開始され、準備チェックに合格しました。 2 番目の数値は、デプロイ構成で指定されたレプリカの目的の数を表します。 これは、デプロイが維持することを目的とするレプリカのターゲット数です。
最初の数値が 2 番目の数値と一致することを確認することが重要です。 必要な数のレプリカが実行され、準備ができていることを示します。 2 つの数値の間に不一致がある場合は、スケーリングまたは準備の問題に対処する必要があることを示している可能性があります。
次のコマンドを実行して、すべての名前空間の StatefulSet 機能を取得します。
kubectl get statefulset -A
次のコマンドを実行して、すべての名前空間の DaemonSet 機能を取得します。
kubectl get ds -A
kubectl get ds コマンドを実行して、DaemonSetが想定どおりに実行されていることを確認できます。 たとえば、次のコマンドを実行して、コンテナー分析情報エージェントが正常にデプロイされたことを確認できます。
kubectl get ds ama-logs --namespace=kube-system
同様に、 マネージド Prometheus の監視で Prometheus メトリックを収集するように AKS クラスターを構成する場合は、次のコマンドを実行して、 DaemonSet が Linux ノード プールに適切にデプロイされていることを確認できます。
kubectl get ds ama-metrics-node --namespace=kube-system
この出力は、クラスター内の DaemonSet 機能に関する情報を提供します。 出力を調べて、 準備完了状態、 現在の状態、および 必要な 状態のポッドの数が同じであることを確認します。 同じ場合、 DaemonSet 構成で指定されたポッドの必要な数は、現在実行中で準備ができているポッドの数と同じです。
ReplicaSet 機能に対して同じチェックを実行することをお勧めします。 次のコマンドを使用して、すべての名前空間の ReplicaSet 機能を取得できます。
kubectl get rs -A
意図した数のポッドまたはレプリカが想定どおりに実行されるように、この出力の数値が各状態で同じであることを確認します。 不一致は、次のいずれかのコマンドを使用して、さらに調査またはトラブルシューティングを行う必要があることを示している可能性があります。
kubectl describe:kubectl describe コマンドを使用すると、ポッド、デプロイ、サービスなど、Kubernetes リソースに関する詳細情報を取得できます。 現在の状態、イベント、条件、関連するメタデータなど、指定されたリソースの包括的な概要を取得できます。 この情報は、Kubernetes API サーバーから取得されます。 このコマンドは、リソースの状態のトラブルシューティングと理解に役立ちます。
kubectl describe pod <pod-name>を実行して、現在の状態、イベント、ラベル、それに関連付けられているコンテナーなど、特定のポッドに関する詳細情報を取得できます。 出力には、ポッドの状態、イベント、ボリューム、条件などの情報が表示されます。
kubectl ログ:kubectl logs コマンドを使用して、ポッド内のコンテナーによって生成されたログを取得できます。 このコマンドは、デバッグとトラブルシューティングに役立ちます。 ログをリアルタイムで表示したり、コンテナーから履歴ログを取得したりできます。
コンテナー ログを表示するには、コマンド kubectl logs <pod-name> -c <container-name>を使用できます。
<pod-name>をポッドの名前に置き換えます。
<container-name>を、ログを取得するコンテナーの名前に置き換えます。 ポッドにコンテナーが 1 つしかない場合は、コンテナー名を指定する必要はありません。
-f フラグをkubectl logsと共に使用して、ログをリアルタイムで追跡することもできます。 このフラグは、 tail -f Linux コマンドに似ています。
kubectl イベント:kubectl events コマンドを使用すると、デプロイ、DaemonSet、ReplicaSet、またはポッドが起動しない場合や、起動時に問題が発生した場合のトラブルシューティングに使用できます。 このコマンドは、指定されたリソースに関連付けられているイベントの時系列リストを提供します。 問題の原因に関する分析情報を取得できます。
kubectl eventsを使用するには、コマンドkubectl events実行し、その後に特定のリソース名を付けます。 または、セレクターを使用して、ラベル、名前空間、またはその他の条件に基づいてイベントをフィルター処理することもできます。
たとえば、特定のポッドに関連するイベントを取得するには、 kubectl events --field-selector involvedObject.name=<pod-name> --field-selector involvedObject.kind=Podを実行できます。
<pod-name>を調査するポッドの名前に置き換えます。
kubectl events コマンドの出力には、イベントの種類 (通常または警告)、イベント メッセージ、イベントの理由、イベントが発生したときのタイムスタンプなどの情報が表示されます。 この情報を使用して、起動時にエラーまたは問題の原因を特定できます。
デプロイ、 DaemonSet、 ReplicaSet などの特定のリソースで問題が発生していると思われる場合は、セレクターを使用してイベントをフィルター処理できます。 たとえば、 kubectl events --field-selector involvedObject.name=<deployment-name> --field-selector involvedObject.kind=Deployment では、特定のデプロイに関連するイベントが表示されます。 潜在的なエラー、エラー、またはリソースの正常な起動を妨げている可能性のあるその他のイベントに関する重要な詳細を収集できるように、イベントを調べます。 このデータは、リソースに影響する問題のトラブルシューティングと解決に役立ちます。
Prometheus と Grafana を使用したクラスター内監視
AKS クラスターに Prometheus と Grafana をデプロイする場合は、 K8 クラスター詳細ダッシュボード を使用して分析情報を取得できます。 このダッシュボードには、CPU とメモリの使用量、ネットワーク アクティビティ、ファイル システムの使用状況など、Prometheus クラスターメトリックから収集された情報が表示されます。 また、個々のポッド、コンテナー、 および systemd サービスの詳細な統計情報も表示されます。
デプロイ、ジョブ、ポッド、コンテナーの正常性とパフォーマンスを確保するために、ダッシュボードの機能を使用できます。 [ デプロイ] を選択すると、各デプロイのレプリカ数とレプリカの合計数が表示されます。 実行中、保留中、失敗、成功したコンテナーを示すグラフを表示するには、[ コンテナー ] を選択します。
Prometheus と Azure Managed Grafana のマネージド サービスを監視する
事前構築済みのダッシュボードを使用して、Prometheus メトリックを視覚化および分析できます。 これを行うには、Prometheus の Monitor マネージド サービスで Prometheus メトリックを収集し、 Monitor ワークスペース を Azure Managed Grafana ワークスペースに接続するように AKS クラスターを設定する必要があります。
事前構築済みのダッシュボードをインストールして、Kubernetes クラスターのパフォーマンスと正常性の包括的なビューを取得します。 詳細なインストール手順については、 Kubernetes の Prometheus 監視 mixin を参照してください。 ダッシュボードは、 Managed Prometheus フォルダー内の指定された Azure Managed Grafana インスタンスにプロビジョニングされます。 一部のダッシュボードには、次のものが含まれます。
- Kubernetes / コンピューティング リソース / クラスター
- Kubernetes / コンピューティング リソース / 名前空間 (ポッド)
- Kubernetes / コンピューティング リソース / ノード (ポッド)
- Kubernetes / コンピューティング リソース / ポッド
- Kubernetes / コンピューティング リソース / 名前空間 (ワークロード)
- Kubernetes / コンピューティング リソース / ワークロード
- Kubernetes/Kubelet
- Node Exporter / USE メソッド / Node
- ノード エクスポーター/ノード
- Kubernetes / コンピューティング リソース / クラスター (Windows)
- Kubernetes / コンピューティング リソース / 名前空間 (Windows)
- Kubernetes / コンピューティング リソース / ポッド (Windows)
- Kubernetes / USE メソッド / クラスター (Windows)
- Kubernetes / USE メソッド / Node (Windows)
これらの組み込みダッシュボードは、Prometheus と Grafana を使用して Kubernetes クラスターを監視するために、オープンソース コミュニティで広く使用されています。 これらのダッシュボードを使用して、リソースの使用状況、ポッドの正常性、ネットワーク アクティビティなどのメトリックを表示します。 監視のニーズに合わせてカスタマイズされたカスタム ダッシュボードを作成することもできます。 ダッシュボードを使用すると、AKS クラスター内の Prometheus メトリックを効果的に監視および分析できます。これにより、パフォーマンスの最適化、問題のトラブルシューティング、および Kubernetes ワークロードの円滑な運用を実現できます。
Kubernetes/コンピューティング リソース/ノード (ポッド) ダッシュボードを使用して、Linux エージェント ノードのメトリックを表示できます。 各ポッドの CPU 使用率、CPU クォータ、メモリ使用量、メモリ クォータを視覚化できます。
Kubernetes/Compute Resources/Pod Grafana ダッシュボードには、選択したクラスター、名前空間、ポッドのリソース消費量とパフォーマンス メトリックに関する分析情報が表示されます。 このダッシュボードを使用すると、CPU 使用率、CPU 調整、CPU クォータ、メモリ使用量、メモリ クォータ、ネットワーク メトリック、ストレージ メトリックに関連するメトリックを取得できます。 ダッシュボードで、選択した名前空間内の AKS クラスター、名前空間、ポッドを選択して、次の詳細を表示します。
CPU 使用率: このグラフには、選択したポッドの時間の経過に伴う CPU 使用率が表示されます。 CPU 消費パターンを確認し、潜在的なスパイクや異常を特定できます。
CPU 調整: このグラフは、ポッドが CPU リソースの制限を超えたときに発生する CPU 調整に関する分析情報を提供します。 このメトリックを監視して、CPU の調整によってポッドのパフォーマンスが制限されている領域を特定するのに役立ちます。
CPU クォータ: このグラフには、選択したポッドに割り当てられた CPU クォータが表示されます。 ポッドが割り当てられた CPU クォータを超えた場合は、リソースの調整が必要になることがあります。
メモリ使用量: このグラフは、選択したポッドのメモリ使用量を示します。 メモリ消費パターンを監視し、メモリ関連の問題を特定します。
メモリ クォータ: このグラフには、ポッドに割り当てられたメモリ クォータが表示されます。 ポッドが割り当てられたメモリ クォータを超えている場合は、リソースの最適化が必要であることを示している可能性があります。
ネットワーク メトリック: これらのグラフは、受信および送信された帯域幅、および受信および送信されたパケットのレートを示します。 これらのメトリックは、ネットワークの使用状況を監視し、潜在的なネットワークのボトルネックや異常を検出するのに役立ちます。
ストレージ メトリック: このセクションでは、1 秒あたりの I/O 操作 (IOPS) やスループットなど、ストレージ関連のメトリックに関する情報を提供します。 これらのメトリックを監視して、ポッド ストレージのパフォーマンスと効率を測定するのに役立ちます。
Kubernetes/Compute Resources/Pod Grafana ダッシュボードを使用して、Kubernetes クラスター内のポッドのリソースの使用状況、パフォーマンス、動作に関する分析情報を取得できます。 この情報を使用して、リソースの割り当てを最適化し、パフォーマンスの問題のトラブルシューティングを行い、コンテナー化されたワークロードの円滑な運用を確実に行うために、情報に基づいた意思決定を行います。
貢献者
この記事は Microsoft によって管理されています。 当初の寄稿者は以下のとおりです。
主要な著者
- パオロ サルヴァトリ |プリンシパル カスタマー エンジニア
その他の共同作成者:
- ケビン・ハリス |プリンシパル ソリューション スペシャリスト
- フランシスコ・シミー・ナハレス |シニア テクニカル スペシャリスト
非公開の LinkedIn プロファイルを表示するには、LinkedIn にサインインします。