Category: 入門編
2024.04.05
目次
通常のシステムモニタリングとの違いや監視すべき対象メトリクス
コンテナの運用管理と自動化を行う Kubernetes は、開発作業を効率化するために広く導入されています。
Kubernetes を安全に運用するには、通常のシステムと同様にパフォーマンスや挙動をモニタリングすることが重要です。とくに複数の細かなコンポーネントが含まれる Kubernetes は、適切な監視方法や監視対象について理解する必要があります。
本記事では Kubernetes モニタリングの概要や重要性、方法、ツールなどについて解説します。
1. Kubernetes モニタリングとは
Kubernetes モニタリングとは、 Kubernetes 環境のパフォーマンスやリソース使用状況、健全性、および全体的な動作状態を追跡して分析するプロセスを指します。
クラスタ上に構築したコンテナやアプリケーションだけでなく、 Kubernetes プラットフォーム自体の監視も含まれます。モニタリングは、 Kubernetes 環境のパフォーマンスを最適化して安全に運用するために効果的です。
モニタリングの重要性
Kubernetes は通常のシステムと違い、ホスト、コンテナ、アプリ、 Kubernetes プラットフォームなど複数の細かなコンポーネントで構成されます。そのため問題が発生した際に原因の特定が困難である場合が多いです。
適切なモニタリングを行うことは、こうした問題の原因や予兆を迅速に発見するために必須といえます。
2. 通常のシステムモニタリングとの違いと注意点
物理サーバーや仮想マシンをベースとしたITシステムと Kubernetes のモニタリングを比較すると、次のような違いや注意点があります。
タグ付け・ラベル付けが必要
Kubernetes 環境では、リソースが動的に生成・変更されます。そのため対象のコンテナがどこにあるのか、タグやラベルを使用して明確に識別して管理しなければなりません。
これにより特定の条件に基づいてリソースをグループ化し、監視対象を絞り込むことも可能になります。
モニタリング対象が多い
通常のシステムでの監視対象はホストやアプリケーション、ネットワーク機器など比較的限定されています。一方 Kubernetes では、 Node 、 Pod 、コンテナ、サービスなど、多数のマイクロサービスや動的なリソースが存在します。
Kubernetes におけるモニタリングはこうした多くの要素を監視して、システム全体の健全性を把握する必要があります。
アプリの追跡が必要
Kubernetes において、コンテナ化されたアプリケーションはPod内で動的にスケーリング・移動します。そのため継続的にモニタリングするには、動的なアプリを追跡する必要があります。
異なる環境への最適化
Kubernetes はクラウド、オンプレミス、ハイブリッド環境などさまざまな環境に対応しており、複数の環境をまたいで構築できることもメリットの1つです。しかしその反面でモニタリングは複雑になるため、それぞれの環境に適したツールを導入するなど、工夫が求められます。
3. Kubernetesのモニタリング対象メトリクス
Kubernetes のモニタリングを行ううえで、とくに重要な対象メトリクスは次のとおりです。
クラスタの状態
クラスタの健全性を把握します。具体的には次のような要素があります。
- Node のステータス
- デプロイされた Pod 数
- 実行中の Pod 数
- 利用可能な Pod 数
- 利用不可な Pod 数
リソース使用量
実際のリソース使用量とマニフェストで定義したリソースの Request / Limits を比較し、クラスタに適切なリソースが割り当てられているかを確認します。 Node 、 Pod などそれぞれのレイヤーごとにリソースを監視する必要があります。
コントロールプレーン
Kubernetes クラスタの管理と制御を担うコントロールプレーンのコンポーネントから収集されるパフォーマンスと健全性を把握します。コントロールプレーンの主要なコンポーネントは次のとおりです。
- API サーバー
- etcd (データストア)
- コントローラーマネージャー
- スケジューラー
イベント
Kubernetes やコンテナエンジンで発生したイベントを収集します。たとえばシステムの異常や重要な変更、リソースの限界、ポリシー違反に関するアラートなどです。これにより設定ミスに気づける場合もあります。
4. Kubernetes のモニタリング方法
前章のようなメトリクスをモニタリングするには、 Kubernetes のエコシステムを使用する、もしくはサードパーティ製のモニタリングツールを使用する方法があります。
Kubernetes エコシステムを使用する
Kubernetes には基本的なモニタリングを行うためのエコシステムが用意されています。たとえば次のようなものが代表的です。
- Kubernetes Dashboard
Web ベースのユーザーインターフェースで、基本的なクラスタの監視・管理を行えます。リソースの状態やパフォーマンスメトリクス、イベント、エラー情報などを視覚的に表示させることが可能です。
図版出典:Kubernetes公式サイト
- Metrics Server
クラスタ内の Node や Pod のリソース( CPU 、メモリなど)使用状況をリアルタイムで収集して提供します。クラスタのスケーリングやパフォーマンス分析に利用できます。
- kube-state-metrics
Kubernetes API サーバーから Kubernetes オブジェクト全体のメトリクスを収集して提供します。Metrics Server よりも広範な範囲の情報を提供し、長期的な監視と分析に適しています。
サードパーティ製のモニタリングツールを使用する
さらに高度なモニタリングや分析のニーズがある場合、サードパーティ製のモニタリングツールを使用することも有効な手段です。代表的なツールを紹介します。
- Prometheus
オープンソースのモニタリングツールです。とくに時系列データの収集や複雑なクエリの実行、監視対象を動的に検出できる点などに強みを持っています。Kubernetes 環境との統合が容易で、クラスタ内のリソースやアプリケーションの監視に適しています。
- Datadog
SaaS 形式で提供されるモニタリングツールです。ホスト、コンテナ、アプリケーションなどのシステム全体を統合的に監視できるため、 Kubernetes のような動的で複雑に組み込まれた環境にも適しています。クラウド、オンプレミス、ハイブリッドなど、さまざまな環境に対応していることも魅力です。
5. まとめ
Kubernetes を安全に運用するには、適切なモニタリングが欠かせません。通常のシステムよりも複数の細かなコンポーネントが含まれる Kubernetes は、モニタリングすべきメトリクスや注意点を考慮し、適したツールを選定することが重要です。ぜひ安全な開発環境を実現するために、 Kubernetes のモニタリング方法について検討してみてください。
Kubernetes の運用を相談したい
Tag: Kubernetes
Contactお問い合わせ
お見積もり・ご相談など、お気軽にお問い合わせください。