Kubernetes監視とは、Kubernetesクラスター内で実行されているコンテナ化されたアプリケーションの健全性、パフォーマンス、コスト特性に関連するデータを収集して分析するプロセスを指します。
「k8s」や「kube」としても知られるKubernetesは、コンテナ化されたアプリケーションの導入、管理、スケーリングをスケジュール設定および自動化するためのコンテナ・オーケストレーション・プラットフォームです。元はGoogleによって設計されたこのプロジェクトは、現在はCloud Native Computing Foundation(CNCF)によって管理されています。
Kubernetesクラスターを監視することで、管理者とユーザーはアップタイム、クラスター・リソースの使用状況、クラスター・コンポーネント間の相互作用などを追跡できます。監視は、リソース不足、障害、起動できないポッド、クラスターに参加できないノードなどの問題を迅速に特定するのに役立ちます。
クラウドネイティブのマイクロサービスとして提供されるKubernetes上のアプリケーションには、互いに通信するコンポーネントが桁違いに多くあります。複数のインスタンスや場所に分散された最新のアーキテクチャーでは、監視、アラート、トラブルシューティングといった日常的なタスクに新たな複雑さが加わります。
また、コンテナの短命な性質により、トラブルシューティングの取り組みが妨げられることがあります。コンテナは通常、コンテナ内で実行されているプロセスと同じ期間存続し、そのプロセスが終了すると消失してしまいます。これは、コンテナのトラブルシューティングを最も難しくしている要素の1つです。コンテナが消失したり、別のノードに再スケジュールされたりすると、インシデント対応に必要な詳細が存在しなくなる可能性があります。
Kubernetesには、クラスターを監視し、実行中のポッドに基づいてアラートを送信するクラスター・オペレーターが組み込まれていますが、オープンソースのツールやサード・パーティー製の監視ソリューションは、Kubernetes環境の完全な可視化を実現するのに役立ちます。
インテリジェントな自動化でビジネス・オペレーションが競争上優位になる方法をご覧ください。
FinOps を運用するためのガイドに登録する
適切なKubernetes監視には、アプリケーション・パフォーマンスの安定性と応答性の維持から、セキュリティーとコンプライアンスの強化まで、さまざまなメリットがあります。
CPU消費量、メモリー使用量、ネットワーク・トラフィック、応答時間などのメトリクスを追跡して分析することで、非効率な領域を特定し、リソース割り当てを最適化し、Kubernetesインフラストラクチャーを微調整して最適なパフォーマンスを得ることができます。
これにより、アプリケーションの応答性が向上し、ユーザー・エクスペリエンス体験が向上します。
CPU使用率、メモリー消費量、ネットワーク・トラフィックなどのリソース使用メトリクスを監視することで、使用率が低いかまたは過剰に利用されているKubernetesノードを特定し、リソース割り当てを最適化し、インフラストラクチャーのスケーリングについて情報に基づいた意思決定を行うことができます。
これによってアプリケーションが最適に動作するために必要なリソースを確保できるため、コストが削減されるという追加のメリットもあります。
Alerts and Notificationは、Kubernetesの問題が中断やダウンタイムにつながる前に、その根本原因をプロアクティブに特定して対処するのに役立ちます。
結果として、システムの安定性が向上し、潜在的な問題がアプリケーションやユーザーに与える影響を最小限に抑えることができます。
ログ、イベント、メトリクスを監視することで、ポッドの障害、リソースの制約、ネットワークの問題、アプリケーションのエラーなどの問題を迅速に特定し、診断することができます。
デバッグ・プロセスが高速化することで、ダウンタイムが短縮され、アプリケーションを利用可能な状態に維持できます。
履歴データを分析し、リソース使用率の傾向を監視することで、将来のリソースのニーズをより正確に予測し、より多くのKubernetesリソースが必要になるタイミングを特定し、それに応じてクラスターをスケーリングする計画を立てることができます。
最終的には、ワークロードの需要が増えてもリソース不足にはなりません。
Kubernetesのログ、ネットワーク・トラフィック、アクセス・パターンを監視することで、異常なアクティビティー、潜在的な侵害、不正アクセスの試みを容易に特定できます。
さらに、適切なセキュリティー管理とポリシーを導入し、積極的に監視することで、標準や規制への準拠を維持することができます。
Kubernetesスタックを完全に可視化するには、常に作成され、破壊され、相互に呼び出しを行うコンテナに関するテレメトリー・データを収集すると同時に、Kubernetesクラスター自体についてもテレメトリー・データを収集する必要があります。
クラスター監視では、Kubernetesクラスターの全体的な正常性を判断するのに役立つ、追跡できるクラスター・レベルのメトリクスがいくつかあります。
ノードの機能:すべてのクラスター・ノードが正常に動作しているかどうか、およびどの程度の能力で動作しているかを監視することは、クラスターの実行にどのようなクラウド・リソースが必要であるかを判別するのに役立ちます。
ノードの可用性:利用可能なクラスター・ノードの数を監視すると、どのクラウド・リソース(AWSやMicrosoft Azureなどのクラウド・プロバイダーを使用している場合)とクラスターの使用方法を判断するのに役立ちます。
ノードのリソース使用量:クラスター全体がリソース(メモリー、CPU、帯域幅、ディスク使用量)をどのように使用しているかを監視することで、クラスター内のノードのサイズや数を増減させる必要があるかどうかを決定できます。
実行中のポッドの数:実行中のポッドを監視すると、使用可能なノードの数が十分かどうか、ノードに障害が発生した場合には、ポッドのワークロード全体を処理できるかどうかがわかります。
Kubernetesクラスター内の個々のポッドが正しく機能していることを確認するには、ポッド・レベルの監視が必要です。これには、Kubernetesメトリクス、コンテナ・メトリクス、アプリケーション・メトリクスの3種類のメトリクスを調べる必要があります。
1. Kubernetesのメトリクス
Kubernetesのメトリクスを監視することで、Kubernetesデプロイメント内のすべてのポッドが稼働し、健全であることを確認できます。
ポッドのインスタンス数:ポッドが持つ現在のインスタンス数が、予想された数と比較して少ない場合、クラスターはリソースが不足している可能性があります。
ポッドのステータス:ポッドが実行しているかどうか、および保留中、失敗、または終了したポッドの数を把握することで、ポッドの可用性と安定性を把握できます。
ポッドの再起動回数:ポッドの再起動回数を監視することで、ポッド内のアプリケーションの安定性を知ることができます。頻繁に再起動する場合は、クラッシュやリソースの制約などの根本的な問題が存在している可能性があります。
CPU使用率:ポッドのCPU消費量を監視することで、潜在的なパフォーマンスのボトルネックを特定し、ポッドに十分な処理リソースを確保することができます。
メモリー使用量:ポッドのメモリー消費量を監視することで、アプリケーションの安定性に影響を与える可能性のあるメモリー・リークや過剰なメモリー使用量を検知できます。
ネットワーク使用量:ポッドの送受信バイト数を監視すると、通信パターンについての洞察が得られ、ネットワークの問題を特定するのに役立ちます。
Kubernetesメトリクスにはさらに、ヘルス・チェック、ネットワーク・データ、および進行中のデプロイメントの状況(つまり、古いバージョンから新しいバージョンに変更されたインスタンスの数)も含まれます。
2. コンテナのメトリクス
ポッド・コンテナのメトリクスを監視すると、設定したリソース制限にどれほど近づいているかを判断するのに役立ちます。これらのメトリクスを使用すると、CrashLoopBackoffでスタックしているポッドを検知することもできます。
CPU使用率/スロットリング:実行中のコンテナがCPUをどのように消費しているかを監視すると、リソースを大量に消費しているコンテナや、クラスターの全体的なパフォーマンスに影響を与える可能性のあるボトルネックを生み出しているコンテナを特定するのに役立ちます。CPUスロットリングのメトリクスを追跡することで、リソースの制約や設定ミスによってコンテナのCPU使用率が制限されているかどうかが明らかになります。
メモリー使用量:実行中のコンテナがどのようにメモリーを消費しているかを監視することで、コンテナの安定性やシステム全体のパフォーマンスに影響を与えている可能性のあるメモリー・リーク、過剰なメモリー使用量、不十分なメモリー割り当てなどの問題に注意を向けることができます。
ネットワーク・トラフィック/エラー:コンテナのネットワーク・トラフィックや、パケット・ロスまたは接続障害などのエラーを監視することで、コンテナの通信パターンや過剰なネットワーク使用状況、または予期しないトラフィックの急増を評価するのに役立ちます。
3. アプリケーションのメトリクス
アプリケーションのメトリクスを監視することで、Kubernetesポッド内で実行されているアプリケーションのパフォーマンスと可用性を測定できます。これらのメトリクスは通常、Kubernetesアプリケーション自体によって開発されたものであり、レイテンシー、応答性、エラー率、応答時間など、Kubernetesアプリケーションが対処するBusiness Rulesに関連します。
以下は、Kubernetes環境を正常に監視するために考慮できるいくつかのベスト・プラクティスです。
Kubernetes DaemonSetsを使用する:DaemonSetsを使用すると、Kubernetes環境の各ノードとそのノード上のすべてのリソースをKubernetesクラスター全体で監視するエージェントをデプロイできます。デーモンは、ホストが表示され、メトリクスを提供する準備が整っていることを確認するのに役立ちます。
ラベルを賢く活用する:論理的で一貫性のあるラベル付けスキーマを策定することで、DevOpsチームはさまざまなコンポーネントを識別しやすくなり、Kubernetes監視から最大限の価値を引き出すことができます。
サービス・ディスカバリーを使用する:Google Kubernetes Engine(GKE)のサービス・ディスカバリーを使用すると、アプリケーションの実行場所がわからなくても、アプリケーションを継続的に監視できます。クラスターの正常性をより完全に把握するために、コンテナの移動に合わせてメトリクスの収集を自動的に適応させます。
Alerts and Notificationを設定する:CPUやメモリー使用率などの重要なメトリクスに対するAlerts and Notificationを設定し、それらのメトリクスが特定のしきい値に達したときに通知を受け取ります。インテリジェントなアラート機能を備えた監視ツールは、意味のあるイベントや変更に対してのみアラートを送信することで、アラート疲労を最小限に抑えます。
コントロール・プレーン要素を監視する:APIサーバー、kube-dns、kubelet、kube-proxy、etcd、コントローラー・マネージャーなどのKubernetesコントロール・プレーン要素を定期的に監視することで、クラスター・サービスがスムーズに実行されていることを確認できます。
ユーザー・エクスペリエンスを監視する:Kubernetesプラットフォームでネイティブには測定されませんが、ユーザー・エクスペリエンスを監視することで、クラスター内で発見される前に問題に関するアラートを受け取れる場合があります。
組み込みツールとオープンソース・ツールを使用する:ユースケースに関係なく、Kubernetesダッシュボード、cAdvisor(コンテナ・アドバイザー)、kube-state-metricsなどの組み込みKubernetes監視ツールや、Prometheus、Grafana、Jaeger、Elastic Stack(旧称ELK Stack)などの一般的なオープンソース・ツールを活用できます。これらのツールは、デプロイ、トラブルシューティング、監視に加えて、データの視覚化や、さまざまなソースからの時系列メトリクスの収集と保存などの追加機能を提供します。
SaaSベースのKubernetes監視ソリューションを使用する:Kubernetesの管理、インフラストラクチャーの開発、コスト管理を容易にし、定期的な更新を受け取るために、オンプレミスのシステムではなく、自動化が組み込まれたSaaSベースの監視システムを使用します。
従来のAPMソリューションの限界を超えて可観測性の活用範囲を広げ、DevOps、サイト信頼性エンジニアリング(SRE)、プラットフォーム・エンジニアリング、ITOps、開発の各部門の誰もが、必要なデータを必要なコンテキストとともに取得できるようになります。
アプリケーションが実行に必要なものだけを消費すると、運用効率が向上し、使用率が向上し、エネルギーコストとそれに伴う二酸化炭素排出量が削減されます。
フルスタックのテレメトリを使用して、監視、トラブルシューティング、アラートの定義、カスタム・ダッシュボードの設計を行う高度な機能を備えた、コンテナとマイクロサービスに焦点を当てたアーキテクチャーを管理します。
Kubernetesとは何か、なぜそれが重要なのか、どのように機能するのか、コンテナ・オーケストレーション・プラットフォームとしてなぜ人気が急上昇し続けているのかといった質問の答えについて理解を深めることができます。
クラウド・コンピューティングにおけるコンテナの重要性、その主なメリット、Docker、Kubernetes、Istio、Knativeなどの関連テクノロジーの新たなエコシステムについてご確認ください。
このレポートをダウンロードして、Turbonomicを使用しているPeerSpotメンバーからクラウド最適化ソリューションを選択する際のベスト・プラクティスと考慮事項をご確認ください。