Kubelet Probes 重設計の課題と解決策

はじめに

Kubernetes における Kubelet Probes は、Pod の健康狀態を監視するための重要な機能です。しかし、現行の設計にはネットワークポリシーとの互換性やセキュリティリスクなどの課題が存在します。本記事では、これらの課題とその解決策を詳細に解説し、OpenShift と CNCF の文脈における技術的検討を提供します。

Kubelet Probes の基本概念

Kubelet Probes は、Pod の狀態を監視するための3つのタイプから構成されます。

  1. Startup Probes:アプリケーションが正常に起動するのを確認します。
  2. Readiness Probes:Pod がトラフィックを受け入れる準備ができているかを判定します。
  3. Liveness Probes:アプリケーションが生きているかをチェックし、失敗時にPodを再起動します。

これらのプローブは、クラウドネイティブアプリケーションの信頼性と可用性を確保するための基盤です。

現行の課題

ネットワークポリシーとの互換性

  • デフォルトでは kubelet 探針がすべてのPodにアクセス可能ですが、ネットワークポリシーによって制限される場合があります。
  • Admin Network Policy API を使用する際、kubelet 探針のトラフィックを明示的に許可する必要があります。

デュアルスタック(IPv4/IPv6)の支援不足

  • Pod がIPv6のみをサポートしている場合、IPv4ベースの探針が失敗します。
  • 探針が使用するIPファミリを明示的に指定する仕組みが不足しています。

マルチネットワークとIP重複の問題

  • Kubernetes はPodに一意のIPを割り當てますが、一部のCNI実裝では複數のIPやIP重複をサポートします。
  • kubelet は複數のIPを識別できず、探針が正しいIPを選択できない場合があります。

セキュリティリスク(Host フィールドの問題)

  • 探針の host フィールドが任意のIPを指定可能で、SSRF(Server Side Request Forgery)攻撃のリスクがあります。
  • 現行では設定に依存するため、セキュリティリスクが高まっています。

解決策の検討

CRI ポート転送の利用

  • 方法:CRIのポート転送機能を使用し、Podのネットワークネームスペース內のローカルアドレス(例:localhost)に接続します。
  • 利點:ネットワークポリシーの変更なしにPodに直接アクセス可能で、IPv4/IPv6の自動適応が可能です。
  • 欠點:Podがすべてのインターフェースを監聽する必要があり、パフォーマンスに影響を與える可能性があります。

Exec Probes の導入

  • 方法:HTTP/TCP/gRPCプローブを、Pod內で実行可能なコマンド(例:curl)に変換します。
  • 利點:ネットワークポリシーの制限を迴避でき、CRIの負荷を軽減します。
  • 欠點:Pod內にcurlなどのツールをインストールする必要があり、高頻度のプローブには不向きです。

CRI 探針APIの追加

  • 方法:CRIに専用の探針APIを追加し、kubeletが定期的に狀態を報告します。
  • 利點:プローブの効率が向上し、kubeletとCRIの頻繁な通信を減らすことができます。
  • 欠點:新しいCRI APIの導入が必要で、実裝の複雑さが増します。

探針専用Podの作成

  • 方法:kubeletが探針用の専用Podを起動し、Admin Network Policyで他のPodへのアクセスを許可します。
  • 利點:探針トラフィックを明確に區別し、セキュリティと管理の柔軟性が向上します。
  • 欠點:システム負荷が増加し、追加のリソースが必要になります。

一時的な解決策(PSA)

  • 現在、Pod Security Admission(PSA)によりhostフィールドの使用を制限し、SSRF攻撃を防ぎます。
  • 管理者はenforcedrestrictedなどのポリシーを設定し、不安全なプローブ構成を阻止または警告します。

技術的検討とリスク

  • APIの互換性:プローブの語義を変更すると既存のアプリケーションとの互換性が損なわれる可能性があります。
  • パフォーマンス影響:ポート転送やExecプローブはCPU使用率や遅延を増加させる可能性があります。
  • セキュリティリスクhostフィールドの厳格な検証が必要で、未承認の外部トラフィックのアクセスを防ぐ必要があります。
  • マルチネットワークの支援:SIG Networkのマルチネットワーク作業組と協調し、IP重複や複數IPの管理問題を解決する必要があります。

結論

Kubelet Probesの設計は、ネットワークポリシー、セキュリティ、パフォーマンスのバランスを取る必要があります。各解決策には利點と欠點があり、実裝環境に応じて最適な選択が求められます。今後の進展には、コミュニティの協力と技術的検討が不可欠です。