Google Cloudとコンテナの継続的なセキュリティ
本文の内容は、2020年11月10日にCarlos Arillaが投稿したブログ(https://sysdig.com/blog/monitor-kubernetes-control-plane/)を元に日本語に翻訳・再構成した内容となっております。
コントロールプレーンはKubernetesの頭脳であり心臓部です。そのすべてのコンポーネントは、クラスターの適切な動作と効率性の鍵を握っています。Kubernetesのコントロールプレーンを監視することは、ノードや内部で実行されているアプリケーションの状態を監視するのと同じくらい重要です。コントロールプレーンに問題があると、すべてのアプリケーションに影響を与え、潜在的な停止を引き起こす可能性があるため、さらに重要かもしれません。
コントロールプレーンの主な構成要素は以下の通りです:
クラスター内で実行されているすべてのサービスは、このインターフェイスを使用してお互いに通信します。kubectl は API へのリクエストを送信するためのラッパーなので、ユーザのインタラクションはすべて API サーバを介して処理されます。
Kubeletは、Podsで記述されたコンテナがノード内で実行されているかどうかをチェックするコンポーネントです。Kubeletは、PodSpecsを受け取り、現在の状態が目的のPodsと一致することを確認することで宣言的に動作します。
これは、クラスターの望む状態 (例: ポッド、シークレット、デプロイメントなど) を保存します。このサービスが実行されていない場合、何もデプロイできず、クラスターは自己修復を行う事はできません。
Kub-controller-manager はマスターノードで動作し、異なるコントローラープロセスを管理します。これらのコントローラーは、API を介してデプロイされたさまざまなサービスの状態を監視し、実際の状態と望ましい状態が一致しない場合には修正を行います。
Kube-proxy はネットワークプロキシーとロードバランサーの実装であり、各ノードと api-server のリンクです。クラスターの各ノードで動作し、クラスターの内外から各ポッドを接続することができます。
このサービスは、クラスター内のすべての名前解決要求を受け取り、すべてのアプリケーションとサービスの内部名を利用可能にします。
私たちは、いくつかの記事で、コントロールプレーンのさまざまなコンポーネントを分析してきました。
その中には、Prometheusのメトリクスを提供するためにこれらのサービスを設定するための手順が書かれています。さらに、どのような値が問題の検出に役立つかを説明し、いくつかの PromQL アラートの例が含まれています。
クラスターを良好な状態に維持するためには、Kubernetesコントロールプレーンの監視が不可欠です。コントロールプレーンの問題を検出することで、インシデント対応を迅速化し、クラスター内で実行されているアプリケーションの停止を減らすことができます。
PromCat.ioにアクセスして、Sysdig Monitorや他のモニタリングツールにインポートできるダッシュボードやアラートテンプレートを含む、Kubernetesコントロールプレーンを簡単にモニタリングするためのリソースを見つけてください。