Kubernetes ワークロードの自動スケーリング
Kubernetesの自動スケーリングは、需要に応じてワークロードを自動的に調整し、コストを削減しながらパフォーマンスを向上させます。主に2つの戦略を採用しています。
- 水平ポッドオートスケーリング (HPA): Web サービスなどのステートレス アプリのポッド レプリカを追加または削除します。
- 垂直ポッドオートスケーリング(VPA): 既存のポッドの CPU/メモリを調整します。データベースなどのステートフル アプリに最適です。
高度な方法 ケダ 外部イベントに基づいて規模を調整し、 クラスター比例オートスケーラー (CPA) クラスターのサイズに応じて拡張されます。これらの戦略を組み合わせることで、効率的なリソース使用と安定したパフォーマンスが保証されます。
概要
- HPA: 変動するトラフィックに最適で、ポッドをスケールアウトします。
- VPA: リソースの使用を最適化し、ポッドごとにリソースを拡張します。
- ケダ: イベント駆動型スケーリング、ゼロへのスケーリングをサポートします。
- 公認会計士: クラスターの成長に合わせてインフラストラクチャ サービスを拡張します。
コスト管理と信頼性を向上させるために、アプリのアーキテクチャとスケーリングのニーズに基づいて選択します。
水平ポッドオートスケーリング(HPA)の説明
水平ポッドオートスケーリングの仕組み
水平ポッドオートスケーリング(HPA)は、メトリクスを常に監視し、それに応じてポッドのレプリカ数を調整する制御ループを介して動作します。HPAコントローラーは、CPU使用率、メモリ消費量、リクエストレート、さらには外部信号などのメトリクスを定期的にチェックし、スケーリングが必要かどうかを判断します。複数のメトリクスが使用されている場合、HPAはそれらすべてを評価し、最も高い需要を示すメトリクスに基づいてスケーリングを行います。デフォルトでは、メトリクスの10%の変動を許容しますが、 --horizontal-pod-autoscaler-tolerance kube-controller-manager の引数。
HPAは次のような集約APIとも統合します。 メトリクス.k8s.io (通常はメトリクスサーバーによって提供されます) カスタムメトリクスk8s.io、 そして 外部メトリクスk8s.ioこれらのデータ ソースにより、HPA はワークロードの変化に動的に対応し、リソースを需要に合わせて調整できるようになります。
HPAの最適な使用例
HPAは、ワークロードを複数のインスタンスに分散することでパフォーマンスが向上する状況で真価を発揮します。例えば、マイクロサービスアーキテクチャでは、各サービスはトラフィックパターンに基づいて独立してスケーリングできます。トラフィックの変動が激しいWebアプリケーションでは、HPAを使用してバックエンドサービスを動的にスケーリングすることで、ピーク時でもスムーズなユーザーエクスペリエンスを確保できます。
また、バッチ処理ジョブにも適しており、ポッドは大規模なデータバッチを処理するためにスケールアップし、ジョブの完了後にスケールダウンすることができます。その他の理想的なシナリオとしては、CI/CDパイプライン、IoTアプリケーション、データストリーミングシステムなど、データ取り込み速度が大きく変動する可能性がある環境が挙げられます。これらのケースにおいて、HPAはリソースを過剰にプロビジョニングすることなく、一貫したパフォーマンスを維持するのに役立ちます。
Kubernetes で HPA を設定する

HPAを最大限に活用するには、適切な設定が不可欠です。まずはKubernetes Metrics Serverをインストールし、CPUとメモリの使用状況に関する正確なリアルタイムデータを取得します。ポッドのリソース要求と制限を定義して明確な使用率のベースラインを確立し、 スペックレプリカ HPA との競合を避けるために、ポッド マニフェストからフィールドを削除します。
パフォーマンスとリソース効率のバランスをとるために、現実的な最小レプリカ数と最大レプリカ数を設定してください。クラスターでクラスターオートスケーラーを使用している場合は、スケールアップイベント時に追加ポッドを処理できることを確認してください。安定化ウィンドウは、急激で不要なスケーリングの変動を防ぐのに役立ちます。
より正確なスケーリングを行うには、リクエストレートやキューの長さといったカスタムメトリクスの使用を検討してください。パフォーマンスを定期的に監視し、実際のワークロードの動作に基づいてしきい値を調整してください。Kubernetes Event-Driven Autoscaling(KEDA)などのツールもHPAを補完し、より複雑なシナリオにおけるイベントベースのスケーリングを可能にします。
垂直ポッドオートスケーリング(VPA)の説明
垂直ポッドオートスケーリングの仕組み
垂直ポッドオートスケーリング(VPA)は、ポッドのレプリカ数を増減するのではなく、ポッド内の個々のコンテナに割り当てられるCPUとメモリリソースを微調整します。VPAは、履歴メトリクスとリアルタイムメトリクスの両方を分析することで、実際の使用状況に合わせてリソース要求と制限を動的に調整します。
VPA システムには 3 つの主要コンポーネントがあります。
- 推薦者: このコンポーネントはメトリックを監視し、最大 8 日間の履歴データを保存して使用パターンを識別し、リソースの推奨事項を生成します。
- アップデータ: ポッドにリソース調整が必要かどうかを評価し、必要に応じて変更を開始します。
- 入場管理者: これにより、ポッドが作成または再起動されるたびに、更新されたリソース設定が適用されます。
VPA は次の 3 つのモードで動作します。
- オフ: 変更を加えずに推奨事項を提供します。
- イニシャル: ポッドの起動時にのみリソース要求と制限を設定します。
- オート: リソースを継続的に調整し、変更を有効にするにはポッドの再起動が必要になります。
たとえば、コンテナーが 64Mi のメモリと 250Mi の CPU を要求するように構成されているが、定期的に 120Mi と 450Mi の CPU を使用している場合、VPA は実際のニーズに合わせてメモリを 128Mi/256Mi に、CPU を 500Mi/1CPU に調整することがあります。
VPAを使用する場合
VPAは、スケールアウト(レプリカの追加)が現実的でない状況で威力を発揮します。例えば、 ステートフルアプリケーション データベースなどのアプリケーションは、データの一貫性と同期の要件により、水平方向のスケーリングに課題を抱えることがよくあります。VPA は、これらのアプリケーションが手動調整なしで適切な量のリソースを確実に受け取れるようにします。
また、 単一インスタンスアプリケーション アーキテクチャ上の制約やライセンス制限により、単一のポッドとして実行する必要があるもの。VPA はリソース管理を簡素化し、過剰プロビジョニングや不足プロビジョニングのリスクを回避します。
のために バッチ処理ジョブ または データ分析ワークロードタスクの複雑さやデータサイズに応じてリソースのニーズが大きく変動する場合でも、VPAはリソースを動的に調整します。つまり、ピーク時のシナリオで過剰なリソース割り当てを行う必要がなくなり、クラスターの効率が向上します。
アプリケーション 予測不可能な資源需要機械学習のトレーニングジョブなどのワークロードもVPAの恩恵を受けます。VPAは、ワークロードのさまざまな段階で変化する要件に適応することで、手動による介入なしに一貫したパフォーマンスを維持するのに役立ちます。
VPA の課題と制限
VPAには多くの利点がある一方で、課題も存在します。大きな制約の一つは、CPUまたはメモリを管理するようにHPA(Horizontal Pod Autoscaling)の両方を設定した場合、VPAとHPAの互換性がないことです。両方を同時に使用すると、矛盾した判断が行われ、ワークロードが不安定になる可能性があります。
もう1つの欠点は、VPAの自動モードでは、リソースの変更を有効にするためにポッドの再起動が必要になることです。これにより一時的なサービス中断が発生する可能性があり、中断のない可用性が求められるアプリケーションや起動に長い時間がかかるアプリケーションには適していません。
VPAのメトリクスはCPUとメモリのみに焦点を当てています。ネットワークI/O、ディスク使用量、カスタムアプリケーションメトリクスといった他の要因は考慮されていません。また、8日間の履歴データウィンドウは、長期的または季節的なパターンを持つワークロードには不十分な場合があります。
最小および最大のリソース制限を定義することは非常に重要です。これらの境界がないと、VPA は短期的な需要の急増時に過剰なリソースを割り当てたり、持続的な需要増加時に十分なリソースを提供できなかったりする可能性があります。
最良の結果を得るには、慎重に始めてください。 オフ または イニシャル まずはVPAの推奨事項を評価するために、自動モードを試してください。調整に自信が持てるようになったら、自動モードへの移行を検討してください。変更後は常にパフォーマンスを綿密に監視し、導入スケジュールに合わせて更新を調整することで、混乱を最小限に抑えることができます。
Kubernetes の高度な自動スケーリング手法
クラスター比例オートスケーラー
の クラスター比例オートスケーラー (CPA) リソース使用量ではなく、クラスターのサイズに基づいてポッドレプリカを調整します。この方法は、クラスターの拡大に合わせて拡張する必要があるインフラストラクチャサービスに特に役立ちます。
Metrics APIやMetrics Serverに依存する他のオートスケーラーとは異なり、CPAはシンプルな制御ループを使用します。クラスタサイズを監視し、ConfigMapに設定された構成に従ってレプリカを調整します。一般的な例としては、スケーリングが挙げられます。 コアDNSたとえば、クラスターが 2 ノードから 5 ノードに増えた場合、CPA は DNS 解決の需要の増加に対応するために CoreDNS レプリカを比例して増やします。
CPAは、レプリカを線形または事前定義されたしきい値に基づいてスケーリングできます。10秒ごとにチェックを行い、クラスターの変化に応じて迅速な調整を行います。これは、すべてのノードにわたって一貫したカバレッジが必要な監視エージェントやログコレクターなどのアプリケーションに特に効果的です。
CPA はクラスター サイズに応じたスケーリングに重点を置いていますが、外部トリガーに反応して機能する別の方法もあります。
KEDA によるイベント駆動型スケーリング

の Kubernetes イベント駆動型オートスケーラー (KEDA) 従来のCPUやメモリのメトリクスではなく、外部イベントに基づいてワークロードをスケーリングするという、異なるアプローチを採用しています。これにより、イベントドリブンタスクの正確なスケーリングが可能になり、アイドル期間中はスケールダウンをゼロにすることでリソースを節約できます。
KEDAはKubernetesとシームレスに統合され、外部イベントデータをシステムに取り込みながら、Horizontal Pod Autoscaler(HPA)を補完します。HPAを置き換えるのではなく、その機能を強化します。
KEDAは、様々なクラウドプラットフォーム、データベース、メッセージングシステム、CI/CDツールに接続する70以上の組み込みスケーラーをサポートしています。例えば、KEDAを使用するデータ処理会社は、AWS SQSキューの深さに基づいてWebアプリケーションポッドをスケールできます。同様に、Kafkaストリームを処理するStatefulSetは、メッセージ量の増加に対応してスケールアップできます。レポートを生成するバッチジョブは、保留中の評価に基づいてPrometheusメトリクスを使用してスケールできます。KEDAのゼロスケール機能は、Webhookハンドラーやスケジュールされたタスクなどの散発的なワークロードに特に役立ちます。
KEDAは カスタムリソース定義(CRD) スケーリングルールを定義することができます。複数のイベントソースを設定し、しきい値を設定し、クールダウン期間を定義することで、急激なスケーリング変動を回避できます。この柔軟性により、KEDAは外部依存関係を必要とせず、クラウドとエッジの両方のデプロイメントに最適な選択肢となります。
複数のスケーリング戦略を組み合わせる
複雑なワークロードを管理するには、多くの場合、複数のスケーリング戦略を組み合わせる必要があります。CPA、KEDA、HPA/VPAを組み合わせることで、より動的で効率的なスケーリングシステムを構築できます。課題は、これらのシステムが互いに競合するのではなく、スムーズに連携できるようにすることです。
例えば、HPA でカスタムアプリケーションメトリクスを使用し、VPA で CPU とメモリの調整に重点を置くように設定できます。KEDA は外部メトリクスを提供することで HPA と統合できるため、HPA で CPU ベースのスケーリングを行いながら、キューの深さに基づいてスケーリングすることも可能です。
ノード容量に対処するために、 クラスターオートスケーラー は重要な役割を果たします。VPAがリソース要求を増加させたり、HPAがレプリカをスケールアウトしたりすると、Cluster Autoscalerはこれらの変更に対応できる十分なノード数を確保します。高度な設定では、インフラストラクチャサービス用のCPA、イベントドリブンタスク用のKEDA、ユーザー向けアプリケーション用のHPAを組み合わせることで、多様なワークロードニーズに対応できます。
ハイブリッドスケーリング戦略の導入には、綿密な計画と監視が必要です。まずは1つの手法を導入し、そのパフォーマンスを観察します。その後、徐々に他の戦略を追加し、急激な変動を防ぐためのクールダウン期間を設けましょう。スケーリングの指標とアクティビティを定期的に確認し、競合や非効率性を特定して解決しましょう。このアプローチにより、アプリケーションとインフラストラクチャの成長に合わせてスケーリングシステムを効果的に進化させることができます。
sbb-itb-59e1987
自動スケーリングのメリットと運用への影響
自動スケーリングの主なメリット
自動スケーリングはKubernetesワークロードの管理方法を変革し、コスト管理の改善、安定したパフォーマンス、そしてスムーズな運用を実現します。これは単なるリソース管理ではなく、スケーラブルで信頼性の高いアプリケーションの構築に不可欠です。
大きな利点の一つは リソース最適化Cloud Native Computing Foundation (CNCF) の報告によると、79% の組織が本番環境で Kubernetes を使用していますが、ほとんどのデプロイメントでは要求された CPU の 20~30% と要求されたメモリの 30~40% しか使用されていません。
「Kubernetesにおける自動スケーリングは、アプリケーションのリアルタイムの需要に合わせてコンピューティングリソースを動的に調整するプロセスです。」 – Ben Grady、ScaleOps
もう一つの重要な利点は コスト削減Flexeraの調査によると、インテリジェントスケーリングによってクラウドコストを30%以上削減できることが示されています。さらに、Datadogのデータによると、監視対象コンテナの65%以上が、要求されたCPUとメモリの半分以下しか使用していないことが明らかになっており、適切な自動スケーリングによって大幅なコスト削減が実現できる可能性が示されています。
自動スケーリングにより、 パフォーマンスの信頼性トラフィックの急増時にも一貫した応答時間を維持し、ワークロードを複数のインスタンスに分散することで、突然の需要の急増時でもシステムの可用性と応答性を維持します。
ついに、 運用効率 自動スケーリングによって改善されます。リソース調整を自動化することで、DevOpsチームは手動でスケーリングする必要がなくなり、開発タスクに集中できます。また、この自動化により、コストとキャパシティの両方の可視性が向上し、リソース管理の負担が軽減されます。
HPAとVPAと高度な手法の比較
様々な自動スケーリング手法が、ワークロードのニーズに合わせて異なります。適切なアプローチを選択することで、Kubernetes環境を微調整し、効率を最大化できます。
| 方法 | 最適な用途 | 利点 | 制限事項 |
|---|---|---|---|
| HPA | ウェブアプリケーション、API、マイクロサービス | 交通状況の変化に素早く対応し、信頼性が高く、セットアップが簡単 | レプリカのスケーリングに制限があり、予測可能なリソース使用パターンで最適に機能します |
| VPA | バッチジョブ、データ処理、リソースを大量に消費するタスク | ポッドリソースを最適化し、過剰プロビジョニングを削減 | ポッドを再起動する可能性があり、ステートフルアプリには適していません |
| CA (クラスターオートスケーラー) | インフラストラクチャサービス、システムコンポーネント | クラスターサイズに合わせて拡張可能、構成も簡単 | クラスタサイズのメトリクスに依存しており、他の方法よりも柔軟性が低い |
| ケダ | イベント駆動型ワークロード、キュー処理 | ゼロまでスケールし、70 以上の外部スケーラーをサポートし、散発的なワークロードを処理 | 外部依存関係が必要で、セットアップが複雑 |
HPA ウェブアプリやAPIなど、予測可能なトラフィックパターンを持つワークロードに最適です。CPUやメモリ使用量などの指標に基づいてポッドレプリカを調整し、定期的なトラフィック変動時でもスムーズなスケーリングを実現します。
VPA スケールアウトではなく、最適化されたポッドリソースを必要とするタスクに適しています。例えば、バッチ処理ジョブや、リソースニーズが変動するデータ量の多いタスクでは、このアプローチが効果的です。
KEDAのような高度な手法 イベント駆動型システムに最適です。CPUやメモリのメトリクスに基づく従来のスケーリングとは異なり、KEDAはキューの深さやメッセージレートなどのシグナルを使用するため、散発的なワークロードやイベントベースのアプリケーションに最適です。
ホスティングインフラストラクチャが自動スケーリングをサポートする方法
強い ホスティングインフラストラクチャ 効果的な自動スケーリングの基盤です。信頼できるサポートがなければ、最高のスケーリング戦略でさえも効果を発揮できない可能性があります。
グローバルインフラ ユーザーがどこにいても、高速な応答時間を確保する上で、ネットワークは重要な役割を果たします。複数の地域にまたがって実行されるアプリケーションの場合、パフォーマンスを維持するためには堅牢なネットワークバックボーンが不可欠です。 Serverion低遅延接続と冗長パスにより、スムーズなスケーリング操作と最小限のダウンタイムを保証します。
マネージドサービス 自動スケーリングの複雑さを簡素化します。チームはインフラストラクチャ管理に追われることなく、スケーリングポリシーの微調整とパフォーマンスの監視に集中できます。例えば、Serverionの マネージドホスティングサービス インフラストラクチャ層を処理するため、スケーリングの決定がシームレスに実行されます。
リソースの可用性 もう一つの重要な要素です。ホスティングプラットフォームは、パフォーマンスを損なうことなくスケーリングの需要に対応できるよう、アベイラビリティゾーン全体にわたって十分なCPU、メモリ、ストレージを提供する必要があります。
最後に、 監視および観測ツール ホスティングプラットフォームに統合されたツールは不可欠です。これらのツールは、リソースの使用状況、アプリケーションのパフォーマンス、スケーリングイベントを追跡し、チームがスケーリングポリシーを継続的に改善するのに役立ちます。
適切に構成された自動スケーリング戦略と組み合わせると、信頼性の高いホスティング インフラストラクチャにより、アプリケーションは予測不可能な需要に対応しながら、コスト効率と一貫したパフォーマンスを維持できるようになります。
結論
適切な自動スケーリング方法の選択
最適な自動スケーリング アプローチを選択するには、まずアプリケーションの特定のニーズとその動作を理解することから始めます。
まず、アプリケーションのリソース要件を評価します。 ワークロードを分析し、リソースのボトルネックを特定します。ステートレスなウェブトラフィックにはHorizontal Pod Autoscaler(HPA)が適しており、リソース需要が変動するワークロードにはVertical Pod Autoscaler(VPA)が適しています。スケーリングのトリガーは、CPU使用率などの一般的な指標だけでなく、実際のボトルネックに合わせて設定してください。
自動化の必要性と複雑さに対する許容度について考えてみましょう。 HPAはセットアップが簡単で、ほとんどのシナリオでうまく機能します。一方、KEDAのようなツールは、より柔軟なイベントドリブンスケーリングを提供しますが、複雑さが増し、外部システムへの依存度が高くなります。
必要に応じて HPA と VPA を組み合わせることを検討してください。 各方法はそれぞれ異なるスケーリングの課題を対象としており、これらを組み合わせて使用することで、より幅広いニーズに対応できます。調整時に競合が発生しないように注意してください。
オートスケーリングを使用すると、ワークロードを何らかの方法で自動的に更新できます。これにより、クラスターはリソース需要の変化に、より柔軟かつ効率的に対応できるようになります。 – kubernetes.io
これらの点を念頭に置くことで、効率的な運用のための強固な基盤を確立できます。
Kubernetesの自動スケーリングに関する最終的な考察
戦略を選択したら、次はそれを実装し、改良していくことに焦点が移ります。Kubernetes の俊敏性と適応性を高めるのは、自動スケーリング機能です。
信頼性の高いインフラストラクチャは、自動スケーリングを成功させるための鍵です。 ホスティングプラットフォームは、スケーリングイベントが発生した際に、迅速かつ安定的にリソースを提供する必要があります。強固な基盤がなければ、最高のスケーリング戦略であっても効果を発揮できない可能性があります。
定期的な監視と調整が不可欠です。 予期しないスケーリング動作に対するアラートを設定し、定期的に設定を確認してください。変更を本番環境に展開する前に、管理された環境でテストを実施してください。スケーリングイベントとパフォーマンスデータを常に監視し、ポリシーを微調整して最適な効率性を維持してください。
実践的な実行を優先します。 リソースのリクエストと制限を微調整することで、アプリケーションがリソースを無駄にすることなく必要なものを取得できます。堅牢な 監視ツール パフォーマンスの問題やスケーリングの決定に関する洞察を得て、システムがスムーズに実行されるようにします。
Serverionのマネージドホスティングサービスとグローバルインフラストラクチャは、効果的な自動スケーリングに必要な信頼性の高いサポートを提供します。強力なネットワークリソースと統合された監視ツールにより、チームはインフラストラクチャの課題を心配することなく、スケーリング戦略の最適化に集中できます。
適切なスケーリング方法、信頼性の高いインフラストラクチャ、継続的な最適化を組み合わせると、Kubernetes の自動スケーリングが画期的な効果を発揮し、アプリケーションが変化する需要に簡単かつ効率的に対応できるようになります。
Kubernetes HPA、VPA、KEDA、Cluster Autoscaler によるスケーリングの説明
よくある質問
Kubernetes ワークロードでは、水平ポッド自動スケーリング (HPA) と垂直ポッド自動スケーリング (VPA) はいつ使用すればよいですか?
どちらを選ぶか 水平ポッドオートスケーリング(HPA) そして 垂直ポッドオートスケーリング(VPA)すべては、ワークロードがどのように動作し、拡張されるかにかかっています。
- HPA ポッドレプリカの数を増減することで、変動する需要に対応できるように設計されています。そのため、ステートレスアプリケーションや、突発的なトラフィックの急増が発生するワークロードに最適です。
- VPA一方、既存のポッドに割り当てられたCPUとメモリリソースの調整に重点を置いています。これは、ステートフルなアプリケーションや、リソースニーズが一貫して予測可能なワークロードに適しています。
シナリオによっては、HPA と VPA の両方を併用することでバランスが取れ、Kubernetes 環境が効率的に実行されるようになります。
Kubernetes で HPA、VPA、KEDA、CPA などの複数の自動スケーリング戦略を使用する場合、何を考慮すべきですか?
使用する場合 自動スケーリング戦略 HPA (Horizontal Pod Autoscaler)、VPA (Vertical Pod Autoscaler)、KEDA (Kubernetes Event-Driven Autoscaler)、CPA (Custom Pod Autoscaler) などのポッド オートスケーラーが相互に干渉することなくスムーズに連携するようにすることが重要です。
これらのツールはそれぞれ特定の役割を果たします。 HPA CPUやメモリ使用量などの指標に基づいてポッドの数を調整します。 VPA 個々のポッドのリソースの推奨や調整を処理します。 ケダ 外部イベントトリガーに応じてワークロードをスケーリングし、 公認会計士 多くの場合、コスト管理に重点を置いたカスタムスケーリングロジックを実装します。効率的な運用を維持するには、競合や不安定なスケーリング動作を回避するために、構成が整合していることを確認してください。
ワークロードの需要と利用可能なリソースのバランスを取ることも重要です。例えば、スケーリングポリシーは、予算の制約内でアプリケーションのパフォーマンス目標をサポートする必要があります。Kubernetes環境が安定し、効率的で、リソース使用が適切に最適化された状態を維持するには、テストと監視が不可欠です。
ホスティング インフラストラクチャは Kubernetes の自動スケーリングのパフォーマンスにどのように影響しますか?
Kubernetesの自動スケーリングの有効性は、ホスティングインフラストラクチャの品質に大きく左右されます。 高速でスケーラブルなインフラストラクチャ 迅速なリソース割り当てを可能にし、レイテンシを削減し、高可用性を確保します。これは、ワークロードの変動を効率的に処理するための重要な要素です。
しかし、ネットワークのボトルネック、限られたコンピューティング能力、不安定な データセンター接続 スケーリングを阻害し、遅延、リソースの無駄、アプリケーションパフォーマンスの低下を引き起こす可能性があります。信頼性の高いサーバー、強力なネットワーク接続、そしてグローバルなデータセンターネットワークを提供するホスティングソリューションを選択することで、自動スケーリングが大幅に強化され、リソース管理の改善とコスト削減につながります。