問題
- 非高可用性(HA)環境では、Kubernetesのスケールダウン・イベントにより、計画外のサイト停止が発生する:
Month Day 00:00:00.00 liferay xxx-xxx deleting pod for node scale down
環境
- Liferay PaaS
Kubernetesのノード・スケーリング・イベントを理解する
Liferay PaaSは共有インフラストラクチャ上で動作し、トレードオフを伴う効率的なリソース利用というメリットを提供します。 Google Kubernetes Engine(GKE)は、ワークロードの需要に基づいてノード数を動的に調整します。
Kubernetesがより多くのリソースの必要性を検出すると、ScaleUpイベントをトリガーし、新しいノードを追加し、バックグラウンドで新しいポッドをスケジューリングします。 逆に、クラスタが十分に利用されていないノードを検出すると、リソース配分とコスト効率を高めるためにスケールダウンします。
ノードのスケールダウンが非 HA 環境で停止を引き起こす理由
高可用性(HA)を設定しないことは、信頼性、パフォーマンス、事業継続性の面で大きな欠点となり、単一障害点をもたらします。
Kubernetesノードのスケーリングは自動的に行われるため、不本意な中断を引き起こす可能性があります。 非HA環境では、サービスは単一のレプリカで運用されます。 その結果、Kubernetesのスケールダウンに起因するような計画外の停止が発生しやすくなります。
最近、停止が増えているのはなぜですか?
私たちのインフラは常にダイナミックですが、その頻度はさまざまです。 より頻繁なスケールダウンの引き金となる条件が以前は存在しませんでしたが、その影響があまり目立たなかった可能性があります。
このようなスケールダウン・イベントの頻度は、クラスタ上の全ユーザーによるクラウド基盤の全体的なリソース使用量に依存します。 リソース需要が変動すると、システムは頻繁にスケールアップとスケールダウンを繰り返します。
Kubernetesにおけるノードのスケールダウンイベントは以下を含みますが、これに限定されない追加要因により、より頻繁に発生する可能性もあります:
- 負荷とリソース利用率の増加:リソースへの需要が高まると、スケーリング調整がより頻繁に行われるようになります。
- ワークロードの変化:作業負荷の変化は、リソースの使用方法に影響を与え、スケーリング・アクションにつながる可能性があります。
- クラウドプロバイダのアップデートGoogle Kubernetes Engine (GKE) が自動スケーリングメカニズムやインフラストラクチャを更新し、スケーリング動作に影響を与える可能性があります。
- ハードウェアまたはOSのメンテナンス:メンテナンス活動はノードの可用性に影響を与える可能性があります。
- ネットワーク負荷分散の調整:Googleによるネットワークロードバランシングの変更は、ノードのスケーリングに影響を与える可能性があります。
なお、Kubernetesの運用イベントはバックグラウンドで自動化されており、具体的な理由は公開されていません。