第16章 自動スケーリング
Kubernetes には HorizontalPodAutoscaler
が含まれています。これにより、StatefulSet または Deployment は指定されたメトリクスに基づいて自動的にスケールアップまたはスケールダウンできます。Infinispan CR は、.status.scale
サブリソースを公開します。これにより、HorizontalPodAutoscaler
リソースが Infinispan CR をターゲットにできます。
HorizontalPodAutoscaler
設定を定義する前に、定義する Data Grid キャッシュのタイプを考慮してください。分散キャッシュと複製キャッシュには、非常に異なるスケーリング要件があるため、これらのキャッシュタイプの組み合わせを実行するサーバーの HorizontalPodAutoscaler
を定義することはメリットがない場合があります。たとえば、メモリー使用量が特定のパーセンテージに達するとスケーリングする HorizontalPodAutoscaler
を定義すると、キャッシュエントリーが Pod 全体に分散されるため、分散キャッシュを定義するときに全体的なキャッシュ容量が増やすことができますが、すべての Pod がすべてのキャッシュエントリーをホストするため、レプリケートされたキャッシュでは機能しません。逆に、CPU 使用率に基づいて HorizontalPodAutoscaler
を設定すると、すべての Pod にはすべてのキャッシュエントリーが含まれ、追加のノード間で読み取り要求を分散することで、より多くの要求を同時に処理できるため、レプリケートされたキャッシュを持つクラスターにとってより有益になります。
16.1. HorizontalPodAutoscaler の設定
Infinispan CR を対象とする HorizontalPodAutoScaler リソースを作成します。
手順
Infinispan
CR と同じ namespace にHorizontalPodAutoscaler
リソースを定義します。apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: infinispan-auto spec: scaleTargetRef: apiVersion: infinispan.org/v1 kind: Infinispan name: example 1 minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50
- 1
Infinispan
CR の名前
タイプ cpu
または memory
のメトリクスリソースを使用する場合は、Infinispan
CR でこのリソースの要求/制限を設定する必要があります。
Operator はクラスターを 0 Pod にスケールダウンする必要があるため、自動スケーリングによりアップグレードプロセスが予期しない状態になる可能性があるため、Data Grid クラスターをアップグレードするときに HorizontalPodAutoscaler を削除する必要があります。