ワークロードのデプロイを監視する
この記事はシリーズの一部です。 最初に概要をご覧ください。
Kubernetes ワークロードを最適に実行できるように、Kubernetes ワークロードの正常性とパフォーマンスを監視することが重要です。 Azure Kubernetes Service (AKS) には、デプロイ、DaemonSet
機能、サービスの正常性とパフォーマンスを確認するために使用できるいくつかのツールが搭載されています。
ツール
すべてのデプロイと DaemonSet
機能が実行されているかどうかを判断することが重要です。 この記事では、"準備完了" と "使用可能" な状態のレプリカが予想されるレプリカ数と一致するかどうかを次を使用して判断する方法について説明します。
- Azure portal。
- Azure Monitor のコンテナー分析情報機能。
- kubectl コマンドライン ツール。
- Prometheus と Grafana。
Azure portal
Azure portal を使用して、ワークロード内の次のコンポーネントの正常性を確認できます。 詳細については、「Azure portal から Kubernetes リソースにアクセスする」をご覧ください。
デプロイ、ReplicaSet
、StatefulSet
、DaemonSet
"準備完了" 状態にあるレプリカの数が、望ましいレプリカの数と一致することを確認します。 ポータルには次の情報が表示されます。
現在使用可能で、トラフィックを処理する準備ができているレプリカの数。 これらのレプリカは、ワーカー ノードに正常にスケジュールされ、スタートアップ プロセスが完了し、準備チェックに合格しました。
デプロイに指定された望ましいレプリカの数、またはデプロイで維持されることを目的とするレプリカの数。 Kubernetes デプロイ コントローラーは、デプロイの状態を常に監視し、実際のレプリカ数が望ましい数と一致することを確認します。
サービスとイングレス
すべてのサービスとイングレスの状態が "問題がない" ことを確認します。
記憶域
すべての永続ボリューム要求と永続ボリュームの状態が "バインド" されていることを確認します。
Container insights
Container Insights は、AKS にデプロイされるか、Azure Arc 対応 Kubernetes によって管理されるコンテナー ワークロードの監視機能を提供する Monitor の機能です。 この機能は、コントローラー、ノード、コンテナーからメモリとプロセッサのメトリックなどのパフォーマンスと正常性の情報を収集します。 また、分析用のコンテナー ログもキャプチャします。
さまざまなビューと事前構築済みのブックを使用して、収集されたデータを分析できます。 クラスター内のさまざまなコンポーネントのパフォーマンスと動作を確認してください。 コンテナーの分析情報を使用すると、コンテナー ワークロードの全体的な状態に関する分析情報を取得できるため、パフォーマンスを最適化し、問題のトラブルシューティングを行うために、情報に基づいた意思決定を行うことができます。
コンテナーの分析情報を使用すると、次のことができます。
各ノードで実行されるコンテナーとそのプロセッサとメモリの使用量を特定して、リソースのボトルネックを割り出すことができます。
コンテナー インスタンスでホストされているコンテナー グループとそのコンテナーのプロセッサとメモリの使用量を特定します。
コントローラーまたはポッド内にあるコンテナーの場所を特定して、コントローラーまたはポッドの全体的なパフォーマンスを表示します。
ホスト上で実行され、ポッドをサポートする標準プロセスとは無関係のワークロードのリソース使用量を確認します。
容量のニーズを特定し、クラスターが維持できる最大負荷を決定できるように、負荷が平均的または大きい場合のクラスターの動作を理解します。
リアルタイムで問題のトラブルシューティングを行えるように、コンテナー エンジンによって生成されるライブ コンテナー ログとメトリックにアクセスします。
ノードまたはコンテナー上の CPU およびメモリ使用率がしきい値を超えたときや、インフラストラクチャまたはノードの正常性ロールアップ時にクラスターで正常性状態の変化が発生したときにユーザーに事前に通知するか、または記録するようにアラートを構成します。
Azure portal では、コンテナー分析情報によって、AKS クラスターの正常性とパフォーマンスを監視および分析するのに役立ついくつかのツールが用意されています。
クラスター: この機能は、CPU とメモリの使用量、ポッドとノードの数、ネットワーク トラフィックなどの主要なメトリックを含めた、AKS クラスターの概要を提供します。 クラスターの全体的な正常性とリソースの使用量に関する分析情報を取得できます。
レポート: この機能は、リソースの使用量、ポッドの正常性、コンテナーの分析情報など、クラスターのパフォーマンスのさまざまな側面を視覚化および分析するために使用できる事前構築済みのレポートを提供します。 このデータは、コンテナーとワークロードの動作とパフォーマンスを理解するのに役立ちます。
ノード: この機能は、クラスター内のノードに関する詳細情報を提供します。 CPU とメモリの使用量、ディスクとネットワークの I/O のメトリック、および各ノードの条件と状態が表示されます。 このデータを使用して、個々のノードのパフォーマンスを監視し、潜在的なボトルネックを特定し、効率的なリソースの割り当てを確保できます。
コントローラー: この機能により、AKS クラスター内の Kubernetes コントローラーが視覚化されます。 コントローラー インスタンスの数、現在の状態、コントローラー操作の状態などの情報が表示されます。 ワークロードのデプロイ、サービス、およびその他のリソースを管理するコントローラーの正常性とパフォーマンスを監視できます。
コンテナー: この機能は、AKS クラスターで実行されるコンテナーに関する分析情報を提供します。 リソースの使用量、再起動、各コンテナーのライフサイクル イベントに関連する情報を提供します。 このデータを、ワークロード内のコンテナーの監視とトラブルシューティングに活用することができます。
ライブ ログ: ライブ ログ機能は、実行中のコンテナーからのログ イベントのライブ ストリームを提供するため、コンテナー ログをリアルタイムで表示できます。 このデータを使用して、アプリケーションを効果的に監視しトラブルシューティングを行い、コンテナーの問題をすばやく特定して解決できます。
詳細については、次のリソースを参照してください。
- Container Insights を使用して Kubernetes クラスターのパフォーマンスを監視する
- Container Insights で GPU の監視を構成する
- Azure ネットワーク ポリシー マネージャーを使用したネットワーク構成の監視と視覚化
- Container Insights によるデプロイと HPA メトリック
- 永続ボリューム (PV) メトリックの監視
- Syslog を使用したセキュリティの監視
- Container Insights のレポート
- Container Insights によって収集されるメトリック
- Kubernetes のログ、イベント、ポッド メトリックをリアルタイムで表示する
- クラスター メトリックをリアルタイムで表示する
コマンドライン ツール
ワークロードの状態を確認するため、kubectl コマンドライン ツールを使用して、Kubernetes API を介して Kubernetes クラスターのコントロール プレーンと通信できます。
ポッド
すべての名前空間で実行されているポッドを一覧表示するには、次のコマンドを実行してください。
kubectl get pod -A
コマンドからの出力で、 READY 列にはポッドのコンテナーの準備状態に関する重要な情報が提供されます。
最初の数値は、現在 "準備完了" 状態にあるコンテナーの数を示します。 これらのコンテナーは準備プローブに合格し、受信トラフィックを処理する準備が整っています。 2 番目の数値は、準備状態に関わらず、ポッド内で定義されているコンテナーの合計数を表します。 これには、準備ができているコンテナーと、まだ初期化中または問題が発生しているコンテナーも含まれます。
最初の数 (準備が完了しているコンテナー) がポッドの 2 番目の数 (コンテナーの合計) と一致していることを確認してください。 これらが異なる場合は、一部のコンテナーの準備ができていないか、"準備完了" 状態に到達できない問題が発生しているおそれがあります。
デプロイ、StatefulSet
、DaemonSet
、StatefulSet
次のコマンドを実行して、すべての名前空間のデプロイを取得します。
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 用の Monitor で Prometheus メトリックを収集するように AKS クラスターを構成する場合は、次のコマンドを実行して、Linux ノード プールに DaemonSet
が適切にデプロイされていることを確認できます。
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 logs: kubectl logs コマンドを使用して、ポッド内のコンテナーによって生成されるログを取得できます。 このコマンドは、デバッグとトラブルシューティングに役立ちます。 ログをリアルタイムで表示したり、コンテナーから履歴ログを取得したりすることができます。
コンテナー ログを表示するには、kubectl logs <pod-name> -c <container-name>
コマンドを使用します。 <pod-name>
は、共有の名前に置き換えてください。 <container-name>
は、ログを取得するコンテナーの名前に置き換えてください。 ポッドにコンテナーが 1 つしかない場合は、コンテナー名を指定する必要はありません。 kubectl logs
で -f
フラグを使用すると、ログをリアルタイムで追跡することもできます。 このフラグは tail -f
Linux コマンドに似ています。
kubectl events: 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 メトリックを視覚化および分析できます。 これを行うには、Monitor managed service for Prometheusで Prometheus メトリックを収集するように AKS クラスターを設定し、Monitor ワークスペースを Azure Managed Grafana ワークスペースに接続する必要があります。
Kubernetes クラスターのパフォーマンスと正常性の包括的なビューを取得するには、事前構築済みダッシュボードをインストールします。 詳細なインストール手順については、「Kubernetes の Prometheus 監視 mixin」を参照してください。 ダッシュボードは、Managed Prometheus フォルダー内の指定された Azure Managed Grafana インスタンスにプロビジョニングされます。 一部のダッシュボードには、次のものが含まれます。
- Kubernetes/コンピューティング リソース/クラスター
- Kubernetes/コンピューティング リソース/名前空間 (ポッド)
- Kubernetes/コンピューティング リソース/ノード (ポッド)
- Kubernetes/コンピューティング リソース /ポッド
- Kubernetes/コンピューティング リソース/名前空間 (ワークロード)
- Kubernetes/コンピューティング リソース/ワークロード
- Kubernetes / Kubelet
- ノード エクスポーター/USE メソッド/ノード
- ノード エクスポーター/ノード
- Kubernetes/コンピューティング リソース/クラスター (Windows)
- Kubernetes/コンピューティング リソース/名前空間 (Windows)
- Kubernetes/コンピューティング リソース/ポッド (Windows)
- Kubernetes/USE メソッド/クラスター (Windows)
- Kubernetes/USE メソッド/ノード (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 によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパル作成者:
- Paolo Salvatori | プリンシパル カスタマー エンジニア
その他の共同作成者:
- Kevin Harris | プリンシパル ソリューション スペシャリスト
- Francis Simy Nazareth | シニア テクニカル スペシャリスト
パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。