私たちのチームでは、ノード数 10,000 を超えるマルチクラスター型の Kubernetes ベース PaaS を開発・運用しています。その中で直面したのが Kubernetes Controller のスケール問題でした。
KubernetesのControllerは、仕組み上単一インスタンスの稼働が必要なため、大規模環境では性能が追いつかない場合があります。
私達のPaaSでは、Controllerの起動時やキャッシュ再同期時に特に高負荷になり、ユーザーのアプリケーション設定変更が反映されるまで 最大 30 分の遅延が発生するなど、利用者体験を損なう状況に陥りました。また、従来のスケールアップやチューニングによる対応では限界が見え始めていました。
そこで私たちは OSS の kubernetes-controller-sharding を活用し、Controller をシャーディングすることでスケールアウトを実現しました。
私たちのPaaS基盤は単純なController一階層で済むようなものではなく、複数のリソースが複数のクラスターに跨って協調するような複雑なアーキテクチャでしたが、今回紹介する手法を用いることで最低限のコード修正でスケールアウトを実現することが可能になりました。
本セッションでは、
- なぜ Controller がボトルネックになったのか
- どのようにシャーディングを導入し、複数リソース・マルチクラスター環境に適用したのか
- 最低限のコード修正でスケールアウトを可能にした設計上の工夫
を紹介します。
この手法は特殊な環境に限らず、広く一般的に適用可能です。聴講者は **「Controller の性能限界に直面したときにどう対処できるか」**という知見を持ち帰ることができます。