はじめに
「Kubernetesクラスターの規模が大きくなるにつれて、iptablesルールの更新に数秒かかるようになった」——これは、クラウドネイティブインフラを運用する多くのエンジニアが直面する現実です。
マイクロサービスアーキテクチャが普及し、Kubernetesクラスター上で動くサービス数が200、500、ときには1,000を超える規模になると、従来のネットワーキング基盤が限界を迎えます。kube-proxyが依存するiptablesは、サービス数の増加に対して線形(O(n))にパフォーマンスが劣化します。200サービスを超えたあたりで、ルールの更新に数秒かかるようになり、新しいPodの起動からトラフィックが流れるまでのレイテンシが無視できなくなります。
さらに、サービスメッシュの導入による負担も深刻です。Istioなどのサイドカーモデルを採用した場合、各PodにEnvoyプロキシが注入され、Podあたり50〜150MBのメモリを消費します。1,000 Pod規模のクラスターでは、プロキシだけで数百GB〜1TB以上のメモリリソースが圧迫されます。CPUオーバーヘッドも無視