第16章 自動スケーリング
Kubernetes には、指定されたメトリクスに基づいて StatefulSet または Deployment を自動的にスケールアップまたはスケールダウンできる HorizontalPodAutoscaler
が含まれています。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 と同じ名前空間に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 でこのリソースのリクエスト/制限を設定する必要があります。
Data Grid クラスターをアップグレードするときは、自動スケーリングによりアップグレードプロセスが予期しない状態になり、Operator がクラスターを 0 Pod にスケールダウンする必要があるため、HorizontalPodAutoscaler を削除する必要があります。