Kubernetes Controller をシャーディングでスケールアウトしよう!

Proposal: (エントリー済み)

中級者   Architecture Design

私たちのチームでは、ノード数 10,000 を超えるマルチクラスター型の Kubernetes ベース PaaS を開発・運用しています。その中で直面したのが Kubernetes Controller のスケール問題でした。
KubernetesのControllerは、仕組み上単一インスタンスの稼働が必要なため、大規模環境では性能が追いつかない場合があります。
私達のPaaSでは、Controllerの起動時やキャッシュ再同期時に特に高負荷になり、ユーザーのアプリケーション設定変更が反映されるまで 最大 30 分の遅延が発生するなど、利用者体験を損なう状況に陥りました。また、従来のスケールアップやチューニングによる対応では限界が見え始めていました。

そこで私たちは OSS の kubernetes-controller-sharding を活用し、Controller をシャーディングすることでスケールアウトを実現しました。
私たちのPaaS基盤は単純なController一階層で済むようなものではなく、複数のリソースが複数のクラスターに跨って協調するような複雑なアーキテクチャでしたが、今回紹介する手法を用いることで最低限のコード修正でスケールアウトを実現することが可能になりました。

本セッションでは、

- なぜ Controller がボトルネックになったのか
- どのようにシャーディングを導入し、複数リソース・マルチクラスター環境に適用したのか
- 最低限のコード修正でスケールアウトを可能にした設計上の工夫

を紹介します。

この手法は特殊な環境に限らず、広く一般的に適用可能です。聴講者は **「Controller の性能限界に直面したときにどう対処できるか」**という知見を持ち帰ることができます。

OTSUKA, Motohiro
LINE ヤフー株式会社
インフラエンジニア

LINE ヤフー株式会社で、社内のプライベートPaaSの開発を行っています。Cloud FoundryからOpenStackを経て、ここ10年ほどはKubernetesを触っています。