はじめに
Kubernetes における Kubelet Probes は、Pod の健康狀態を監視するための重要な機能です。しかし、現行の設計にはネットワークポリシーとの互換性やセキュリティリスクなどの課題が存在します。本記事では、これらの課題とその解決策を詳細に解説し、OpenShift と CNCF の文脈における技術的検討を提供します。
Kubelet Probes の基本概念
Kubelet Probes は、Pod の狀態を監視するための3つのタイプから構成されます。
- Startup Probes:アプリケーションが正常に起動するのを確認します。
- Readiness Probes:Pod がトラフィックを受け入れる準備ができているかを判定します。
- 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攻撃を防ぎます。
- 管理者は
enforced
やrestricted
などのポリシーを設定し、不安全なプローブ構成を阻止または警告します。
技術的検討とリスク
- APIの互換性:プローブの語義を変更すると既存のアプリケーションとの互換性が損なわれる可能性があります。
- パフォーマンス影響:ポート転送やExecプローブはCPU使用率や遅延を増加させる可能性があります。
- セキュリティリスク:
host
フィールドの厳格な検証が必要で、未承認の外部トラフィックのアクセスを防ぐ必要があります。
- マルチネットワークの支援:SIG Networkのマルチネットワーク作業組と協調し、IP重複や複數IPの管理問題を解決する必要があります。
結論
Kubelet Probesの設計は、ネットワークポリシー、セキュリティ、パフォーマンスのバランスを取る必要があります。各解決策には利點と欠點があり、実裝環境に応じて最適な選択が求められます。今後の進展には、コミュニティの協力と技術的検討が不可欠です。