In this article
Kubernetesモニタリングガイド
Kubernetesデプロイメントをモニタリングするためのヒントとベストプラクティス
Kubernetesモニタリングとは?
Kubernetesモニタリングとは、Kubernetesワークロードやクラスターの状況を把握するために、ツールやプロセスを活用することです。効果的なモニタリングにより、管理者は、将来的に大きなシステムの問題につながる可能性のあるパターンを特定できます。モニタリングすべき重要な項目には、CPU使用率などのリソースメトリクスや、リクエスト率などのAPIメトリクスがあります。クラウドセキュリティ侵害の主な原因は設定ミスであるため、ワークロードのデプロイ前にセキュリティ上の問題を特定できるよう、設定をモニタリングすることも重要です。
Kubernetesデプロイメントをモニタリングすべき理由
Kubernetesは、分散システム上でコンテナ化されたアプリケーションをデプロイするプロセスを簡素化できるため、広く利用されています。単一ノードで単一のコンテナを実行する場合でも、慎重な設定と継続的な管理が必要です。これを数百、数千のノードに拡大するには、多大な人的リソースとワークフロー管理が必要になります。Kubernetesは、そうしたシステムや経験に基づく知識を、コンテナ化されたアプリケーションのオーケストレーションに必要なノウハウを自動化するプラットフォームに集約します。
Kubernetesは自らを管理できないため、Kubernetesのデプロイメントをモニタリングすることが重要です。新しいバージョンのリリースやKubernetesのセキュリティ脆弱性など、アプリケーションの変更によって異常が発生し、問題につながる可能性があります。コンテナセキュリティのベストプラクティスに従えば、そもそもの問題発生を防ぎやすくなります。さらに、アプリケーションのリクエストや異常をモニタリングすることで、問題を早期に検出し、サービス障害やセキュリティ侵害につながる前に対処できます。
Kubernetesのモニタリングにおける課題
Kubernetesのモニタリングには、コンテナのモニタリングと共通する課題が多くあります。KubernetesにはKubernetes Dashboardが付属しており、ワークロードやクラスターの基本的なリアルタイムモニタリングを提供します。Kubernetesの分散性と動的な性質を踏まえると、堅牢なモニタリングには専用のツールとプロセスが必要です。
ワークロードとクラスター自体の両方をモニタリングする必要があります。コアコンポーネントの設定ミスからネットワーク接続の問題まで、Kubernetesのサービスやリソースからの報告がいつでも停止する原因はさまざまです。そのため、従来の静的なモニタリングでは対応が難しく、リアルタイムモニタリングが必要になります。さらに、Kubernetesではマイクロサービスと名前空間を中心に構成されるため、物理ノードやサービスポート単位でのモニタリングでは不十分です。
本番環境のモニタリングに加えて、Kubernetesではセキュリティ制御が適切に設定されていることを確認するための構成管理が必要です。Kubernetesの設定は通常、Kubernetes YAML、Helm Charts、テンプレートツールなどのコードで指定します。ワークロード、クラスター、ネットワーク、インフラストラクチャを適切に設定することは、問題を未然に防ぎ、侵害が発生した場合の影響を抑えるうえで重要です。設定プロセスもKubernetesのモニタリング対象です。本番環境に影響が及ぶ前に問題を見つける必要があります。
追跡すべき重要な指標
Kubernetesクラスターとワークロードの健全性を保つには、次の5つの領域をモニタリングすることが重要です。
パフォーマンス
クラスター、ノード、Podのパフォーマンスをモニタリングすると、コンテナの可視性に関する課題に対処できます。
リソース使用率
クラスターや名前空間におけるCPUとメモリの使用率を追跡することで、利用可能なリソースを最大限に活用できます。
アプリケーションのトレース
必要な指標を特定し、アプリケーションからどのように取得するかを慎重に検討する必要があります。
機能テスト
アプリケーションがソリューションスタックの他の要素と連携して、期待どおりに動作することを確認できます。
セキュリティ
KubernetesはAPIサーバーの監査ログを提供します。DNSなどのログをモニタリングすると、不審なアクティビティを特定できます。
Kubernetesモニタリングの5つのベストプラクティス
Kubernetesをモニタリングする際は、次のベストプラクティスに従いましょう。
タグとラベルを活用する
KubernetesはPlatform as a Serviceではないため、アプリケーションはメタデータを使って非公式に定義されます。管理を簡素化するには、アプリケーションに名前やインスタンスなどの一般的なラベルを付けることが重要です。個々のコンテナではなく、コンテナ群全体を見る
Kubernetesが管理するのはコンテナではなくPodであるため、Pod単位でモニタリングすることが重要です。サービスディスカバリーを活用する
サービスディスカバリーを利用すると、変化の激しいKubernetesサービスもモニタリングできます。ダッシュボードだけでは不十分:アラートも設定する
健全なKubernetes環境の基準に基づいてアラートを設定できます。ただし、アラートの過剰な発生による感度の低下には注意が必要です。分散システムには、モニタリング対象となり得るエンドポイントが数多くあります。Kubernetesコントロールプレーンを調べる
Kubernetesコントロールプレーンは航空管制官のように、ワークロードのスケジューリング、モニタリング、クラスター管理を担います。APIサーバー、コントローラーマネージャー、スケジューラーなど、各コンポーネントを調べることで、タスクのオーケストレーションとスケジューリングが効率よく継続されていることを確認できます。
Kubernetesに最適なモニタリングツール
Kubernetesのワークロードとリソースは複雑かつ大規模なため、プラットフォームのあらゆる側面をモニタリングするには適切なツールが必要です。モニタリングツールは、大きく3つのカテゴリに分けられます。
オープンソース: Kubernetesジョブから時系列データを集約するPrometheusなどがあります。PrometheusはSoundCloudで開発され、Cloud Native Computing Foundationの卒業プロジェクトです。Grafanaと連携してデータを可視化し、アラートにはAlertManagerを利用できます。
SaaS: SysdigなどのSaaSベースのモニタリングソリューションを利用すると、可視化やアラート用のサードパーティ製ツールを必要とせず、より包括的なモニタリングが可能です。
エンタープライズ向け: Sysdigなどのツールは、チーム間のコラボレーションを可能にする高度な機能や、AIを活用した実用的なインサイトを提供します。
これらのKubernetesモニタリングツールは、本番環境のワークロードの監視に重点を置いています。SnykのKubernetes Configuration Securityを使えば、Kubernetesの設定を記述しながら、本番環境にデプロイする前にスキャンできます。Kubernetes Configuration Securityは開発者ファーストのアプローチを採用しており、開発者は普段のワークフローの中で問題を特定し、修正できます。
Kubernetesやコンテナに関する問題について詳しく知りたい方は、こちらの記事もご覧ください。
コンテナセキュリティとは? | コンテナイメージのセキュリティ | Snyk
Kubernetesモニタリングに関するよくある質問
Kubernetesにはモニタリング機能がありますか?
Kubernetesには、CPUメトリクスなどの基本的なモニタリング機能がありますが、最適なパフォーマンスを得るにはサードパーティ製ツールに依存します。Kubernetes Dashboardを使うと、Kubernetesのワークロードやクラスターを管理するためのモニタリングができます。データを収集して問題を診断できる、より高度なモニタリングには、サードパーティ製ツールが必要です。
Kubernetesコンテナを監視するにはどうすればよいですか?
Kubernetesコンテナを監視するには、監視データを収集する方法、そのデータを保存するデータベース、そしてワークロードやクラスターの問題や障害について分析できる可視化プラットフォームが必要です。本番環境のKubernetesワークロードの監視に役立つ、オープンソース、SaaS、エンタープライズ向けのさまざまなツールがあります。また、設定を作成する際と、本番環境にデプロイする前にスキャンすることも重要です。
Kubernetesの監視に最適なツールは何ですか?
本番環境でKubernetesを監視するツールは、大きく3種類あります。Prometheusのようなオープンソースツール、SysdigのようなSaaSソリューション、Dynatraceのようなエンタープライズ向けツールです。また、SnykのConfiguration Securityソリューションを使えば、開発者は普段のワークフローで構成コードをスキャンし、本番環境に移行する前に設定ミスを検出できます。
Kubernetesでマイクロサービスを監視するには、どうすればよいですか?
マイクロサービスの監視には、リクエスト率やレイテンシなど、APIに関連する指標を追跡するのが最適です。CPU使用率などのリソースに関するKPIも監視には重要ですが、特定のマイクロサービスの問題を切り分けにくくなります。