🔥 Kubernetesのネットワーク問題を解決!
みなさん、こんにちは!今日はKubernetesの世界で「どうやってクラウドにあるcontrol planeからオンプレやローカルにあるクラスタへの接続を確立するか」という課題に革命を起こしたKonnectivityについて紹介します!
💡 単方向通信の仕組み
Konnectivityの仕組みはシンプル!
- 単方向接続化: nodeからcontrol planeへ接続を開始
- Proxy(gRPC or TCP)の魔法: 双方向ストリームで通信を確立
- トンネリング技術: 一度確立した接続を使い回す
🚀 通信フローを図解!
Node側 (Agent) -----接続開始-----> Control Plane側 (Server)
↑ ↓
| |
←-----双方向データ通信---------------→
🔍 プロトコルの部分
gRPCで実現するKonnectivityはAgentService.Connect
という双方向ストリームRPCで全てのControl Planeからの通信をトンネリングします。
- agent/agent.proto at 8ae445c65f2df27dee5163458bfbbca487fc5862 · kubernetes-sigs/apiserver-network-proxy
- client/client.proto at 8ae445c65f2df27dee5163458bfbbca487fc5862 · kubernetes-sigs/apiserver-network-proxy
利用シナリオ
- kubectl execやkubectl logsのようなコマンドを実行する場合
- APIサーバーがクラスタ内のWebhookやAggregation API Service、metrics-serverにアクセスする必要がある場合
- コントロールプレーンとワーカーノードが分離されたネットワークに存在する場合
🏁 まとめ
Konnectivityは「接続は一方向、通信は双方向」というアプローチでcontrol planeからクラスタへの通信の方向の問題を解決しています。