1

以下のように、CPU とメモリに k8s HPA テンプレートを使用しています。

---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: {{.Chart.Name}}-cpu
  labels:
    app: {{.Chart.Name}}
    chart: {{.Chart.Name}}
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: {{.Chart.Name}}
  minReplicas: {{.Values.hpa.min}}
  maxReplicas: {{.Values.hpa.max}}
  targetCPUUtilizationPercentage: {{.Values.hpa.cpu}}
---
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: {{.Chart.Name}}-mem
  labels:
    app: {{.Chart.Name}}
    chart: {{.Chart.Name}}
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: {{.Chart.Name}}
  minReplicas: {{.Values.hpa.min}}
  maxReplicas: {{.Values.hpa.max}}
  metrics:
    - type: Resource
      resource:
        name: memory
        target:
          type: Utilization
          averageValue: {{.Values.hpa.mem}}

2 つの異なる HPA があると、ポッドの CPU 使用率が CPU のスケールダウン トリガーを下回っているため、メモリ HPA 制限をトリガーするためにスピンアップされた新しいポッドが CPU HPA によって即座に終了します。スピンアップされた最新のポッドが常に終了するため、古いポッドが保持され、メモリ HPA が再びトリガーされ、無限ループが発生します。毎回発生中のポッドではなく、使用率の高いポッドを終了するように CPU HPA に指示する方法はありますか?

4

1 に答える 1