

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ワークロードのスケーリング
<a name="workload-scaling"></a>

Kubernetes でのワークロードスケーリングは、動的環境でアプリケーションのパフォーマンスとリソース効率を維持するために不可欠です。スケーリングは、アプリケーションがパフォーマンスを低下させることなくさまざまなワークロードを処理できるようにするのに役立ちます。Kubernetes では、リアルタイムのメトリクスに基づいてリソースを自動的にスケールアップまたはスケールダウンできるため、組織はトラフィックの変化に迅速に対応できます。この伸縮性により、ユーザーエクスペリエンスが向上するだけでなく、リソース使用率も最適化され、使用率の低いリソースや過剰にプロビジョニングされたリソースに関連するコストを最小限に抑えることができます。

さらに、効果的なワークロードスケーリングは高可用性をサポートし、需要のピーク時でもアプリケーションの応答性を維持します。Kubernetes でのワークロードスケーリングにより、組織は現在のニーズに合わせて容量を動的に調整することで、クラウドリソースをより有効に活用できます。

このセクションでは、次のタイプのワークロードスケーリングについて説明します。
+ [水平ポッドオートスケーラー](#hpa) 
+ [クラスター比例オートスケーラー](#cpa)
+ [Kubernetes ベースの Event Driven Autoscaler](#keda)

## Horizontal Pod Autoscaler
<a name="hpa"></a>

[Horizontal Pod Autoscaler](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) (HPA) は、観測された CPU 使用率やその他の選択されたメトリクスに基づいて、デプロイ、レプリケーションコントローラー、またはステートフルセット内のポッドレプリカの数を自動的に調整する Kubernetes 機能です。HPA を使用すると、アプリケーションは手動で介入することなく、変動するトラフィックとワークロードレベルを管理できます。HPA は、利用可能なリソースを効果的に活用しながら、最適なパフォーマンスを維持する手段を提供します。

ウェブアプリケーション、マイクロサービス、APIs など、ユーザーの需要が時間の経過とともに大幅に変動する可能性がある状況では、HPA が特に役立ちます。

Horizontal Pod Autoscaler には、次の主要な機能があります。
+ **自動スケーリング** – HPA は、リアルタイムメトリクスに応じてポッドレプリカの数を自動的に増減するため、アプリケーションはユーザーの需要に合わせてスケーリングできます。
+ **メトリクスベースの決定** – デフォルトでは、HPA は CPU 使用率に基づいてスケーリングされます。ただし、メモリ使用量やアプリケーション固有のメトリクスなどのカスタムメトリクスを使用することもできます。これにより、よりカスタマイズされたスケーリング戦略が可能になります。
+ **設定可能なパラメータ** – 最小レプリカ数と最大レプリカ数、および希望する使用率を選択できます。これにより、スケーリングの重要度に対する権限が付与されます。
+ **Kubernetes との統合** – リソースをモニタリングおよび変更するために、HPA は Metrics Server、Kubernetes API、カスタムメトリクスアダプターなど、Kubernetes エコシステムの他の要素と連携して動作します。
+ **リソース使用率の向上** – HPA は、ポッドの数を動的に変更することで、リソースを効果的に使用し、コストを削減してパフォーマンスを向上させるのに役立ちます。

## クラスタープロポーショナルオートスケーラー
<a name="cpa"></a>

[Cluster Proportional Autoscaler](https://github.com/kubernetes-sigs/cluster-proportional-autoscaler) (CPA) は、使用可能なノードの数に基づいてクラスター内のポッドレプリカの数を自動的に調整するように設計された Kubernetes コンポーネントです。リソース使用率メトリクス (CPU やメモリなど) に基づいてスケールする従来のオートスケーラーとは異なり、CPA はクラスター自体のサイズに比例してワークロードをスケールします。

このアプローチは、CoreDNS やその他のインフラストラクチャサービスなど、クラスターサイズに対して特定のレベルの冗長性や可用性を維持する必要があるアプリケーションに特に役立ちます。CPA の主なユースケースには、次のようなものがあります。
+ オーバープロビジョニング
+ コアプラットフォームサービスのスケールアウト
+ CPA はメトリクスサーバーや Prometheus Adapter を必要としないため、ワークロードをスケールアウトする

スケーリングプロセスを自動化することで、CPA はバランスの取れたワークロード分散を維持し、リソース効率を高め、ユーザーの需要を満たすようにアプリケーションを適切にプロビジョニングすることを支援します。

Cluster Proportional Autoscaler には、次の主要な機能があります。
+ **ノードベースのスケーリング** – CPA は、スケジュールできるクラスターノードの数に応じてレプリカをスケーリングし、アプリケーションがクラスターのサイズに比例して拡張または縮小できるようにします。
+ **比例調整** — アプリケーションがクラスターサイズの変化に応じてスケールできるように、オートスケーラーはノード数とレプリカ数の間に比例関係を確立します。この関係は、ワークロードに必要な数のレプリカを計算するために使用されます。
+ **Kubernetes コンポーネントとの統合** – CPA は Horizontal Pod Autoscaler (HPA) などの標準 Kubernetes コンポーネントと連携しますが、リソース使用率メトリクスではなくノード数に特に重点を置いています。この統合により、より包括的なスケーリング戦略が可能になります。
+ **Golang API クライアント** – ノードの数とその使用可能なコアをモニタリングするために、CPA はポッド内で実行され、Kubernetes API サーバーと通信する Golang API クライアントを使用します。
+ **設定可能なパラメータ** – を使用すると`ConfigMap`、ユーザーは CPA が動作を変更するために使用するしきい値とスケーリングパラメータを設定し、意図したスケーリングプランに従っていることを確認できます。

## Kubernetes ベースの Event-Driven Autoscaler
<a name="keda"></a>

Kubernetes ベースの Event Driven Autoscaler ([KEDA](https://keda.sh/)) は、処理する必要があるイベントの数に基づいて Kubernetes ワークロードをスケールできるようにするオープンソースプロジェクトです。KEDA は、さまざまなワークロード、特にイベント駆動型ワークロードに動的に応答できるようにすることで、アプリケーションのスケーラビリティを強化します。

イベントに基づいてスケーリングプロセスを自動化することで、KEDA は組織がリソース使用率を最適化し、アプリケーションのパフォーマンスを向上させ、オーバープロビジョニングに関連するコストを削減するのに役立ちます。このアプローチは、マイクロサービス、サーバーレス関数、リアルタイムデータ処理システムなど、さまざまなトラフィックパターンを経験するアプリケーションに特に役立ちます。

KEDA には以下の主要な機能があります。
+ **イベント駆動型スケーリング** – KEDA では、メッセージキュー、HTTP リクエスト、カスタムメトリクスなどの外部イベントソースに基づいてスケーリングルールを定義できます。この機能は、アプリケーションがリアルタイムの需要に応じてスケールインするのに役立ちます。
+ **軽量コンポーネント** – KEDA は、既存の Kubernetes クラスターに簡単に統合するために多くのセットアップやオーバーヘッドを必要としない、単一用途の軽量コンポーネントです。
+ **Kubernetes との統合** – KEDA は、Horizontal Pod Autoscaler (HPA) などの Kubernetes ネイティブコンポーネントの機能を拡張します。KEDA は、これらのコンポーネントにイベント駆動型のスケーリング機能を追加し、置き換えるのではなく強化します。
+ **複数のイベントソースのサポート** – KEDA は、RabbitMQ、Apache Kafka などの一般的なメッセージングプラットフォームなど、さまざまなイベントソースと互換性があります。この適応性により、独自のイベント駆動型アーキテクチャに合わせてスケーリングをカスタマイズできます。
+ **カスタムスケーラー** – カスタムスケーラーを使用すると、KEDA が特定のビジネスロジックまたは要件に応じてスケーリングアクションを開始するために使用できる特定のメトリクスを指定できます。
+ **宣言型設定** – Kubernetes の原則に従って、Kubernetes カスタムリソースを使用してスケーリングの実行方法を定義することで、KEDA を使用してスケーリング動作を宣言的に記述できます。