29章Elastic Scale(エラスティックスケール)
Elastic Scale(エラスティックスケール)パターンは、複数の次元でスケールするアプリケーションを扱います。すなわち、Podレプリカの数を変更することで行う水平スケーリング、Podのリソース要求を変更することで行う垂直スケーリング、あるいはクラスタノードの数を変更することで行うクラスタ自体のスケーリングです。これらのどのアクションも手動で実行できますが、この章ではKubernetesが負荷に応じて自動でスケーリングできる方法を見ていきます。
29.1 問題
Kubernetesは、多数のイミュータブルなコンテナから構成される分散アプリケーションのオーケストレーションと管理を、宣言的に表現された望ましい状態に保つことで自動化します。しかし、時と共に変化する多くのワークロードの性質上、望ましい状態とはどのような状態なのかを判断するのは簡単なことではありません。SLA(service level agreement、サービス水準合意)を満たすにはある時点においてコンテナにどのくらいのリソースが必要なのか、サービスにはいくつのレプリカが必要なのかを正確に見極めるのには、時間と労力が必要です。しかし幸いなことにKubernetesは、コンテナのリソース、サービスの望ましいレプリカの数、クラスタ内のノードの数を簡単に変更できるようにしてくれます。このような変更は手動で行うこともできますし、ある一定のルールに従って完全に自動化された形で行うこともできます。
Kubernetesは決まったPodやクラスタの設定を保持するだけでなく、外部からの負荷やキャパシティに関するイベントを監視し、現在の状態を分析し、望ましいパフォーマンスを発揮するよう自分自身をスケールさせられます。こういった観測の仕組みは、予測した情報ではなく実際の使用量のメトリクスを元にして、Kubernetesが脆弱性への耐性を得て、それを高める方法の1つです。このような振る舞いを実現するいくつかの方法と、さらによいエクスペリエンスを実現するために複数のスケーリング手法を組み合わせる方法を見ていきましょう。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access