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

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


Tomoyuki Nakamura

LINEヤフー

一般エンジニア

2019年Yahoo!Japanに新卒入社し、以降社内PaaSの運用に携わってきました。 入社前はKubernetesと言う言葉すら知らない素人でしたが、ようやく活躍の場も広げられています。 管理している社内PaaSのリソースや負荷状況などを眺めて予想したり、適正化を考えたりすることが好きで数年ほどキャパシティプランニングを担当しています。

OTSUKA, Motohiro

LINE ヤフー株式会社

インフラエンジニア

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


Background