Kubernetes自动缩放策略不起作用

Kubernetes自动缩放策略不起作用,kubernetes,kubernetes-helm,autoscaling,policies,kubernetes-hpa,Kubernetes,Kubernetes Helm,Autoscaling,Policies,Kubernetes Hpa,我已经在我的HorizontalPodAutoscaler中添加了一些缩放策略,但它们没有被应用。scaleUp和scaleDown行为被忽略。我需要一种方法来阻止豆荚每隔几分钟向上和向下扩展,以响应较小的CPU峰值。理想情况下,HPA将快速扩大以响应更多的流量,但在减少约30分钟的流量后缓慢缩小 我在AWS EKS群集上运行此程序,并根据设置了策略 这可能是EKS或我的K8s版本1.14的限制。我已经运行了kubectlapi版本,我的集群确实支持自动缩放/v2beta2 我的头盔规格是: a

我已经在我的HorizontalPodAutoscaler中添加了一些缩放策略,但它们没有被应用。scaleUp和scaleDown行为被忽略。我需要一种方法来阻止豆荚每隔几分钟向上和向下扩展,以响应较小的CPU峰值。理想情况下,HPA将快速扩大以响应更多的流量,但在减少约30分钟的流量后缓慢缩小

我在AWS EKS群集上运行此程序,并根据设置了策略

这可能是EKS或我的K8s版本1.14的限制。我已经运行了
kubectlapi版本
,我的集群确实支持自动缩放/v2beta2

我的头盔规格是:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: {{ template "app.fullname" . }}
  labels:
    app: {{ template "app.name" . }}
    chart: {{ template "app.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  scaleTargetRef:
    apiVersion: apps/v1beta2
    kind: Deployment
    name: "{{ template "app.fullname" . }}-server"
  minReplicas: {{ .Values.hpa.minReplicas }}
  maxReplicas: {{ .Values.hpa.maxReplicas }}
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: AverageValue
        averageValue: 200m
  behavior:
    scaleUp:
      stabilizationWindowSeconds: 300
      policies:
      - type: Pods
        value: 1
        periodSeconds: 300
    scaleDown:
      stabilizationWindowSeconds: 1200
      policies:
      - type: Pods
        value: 1
        periodSeconds: 300

如评论中所述,即使启用了
autoscaling/v2beta2
,此功能也无法在1.14版上运行

从v1.18开始,v2beta2api允许扩展行为 通过HPA行为字段配置


最简单的方法是升级到1.18。

我想基于对我有效的
targetAverageValue
实现HPA

当GKE版本在
1.12到1.14之间时,您将无法应用
autoscaling/v2beta2
的清单,但是您可以应用类似的东西

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: core-deployment
  namespace: default
spec:
  maxReplicas: 9
  minReplicas: 5
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: core-deployment
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageValue: 500m
它对我有用

客户端版本:v1.20.2 服务器版本:v1.18.9-eks-d1db3c

kubectl api版本和my cluster还支持自动缩放/v2beta2

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: {{ template "ks.fullname" . }}-keycloak
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: {{ template "ks.fullname" . }}-keycloak
  minReplicas: {{ .Values.keycloak.hpa.minpods }}
  maxReplicas: {{ .Values.keycloak.hpa.maxpods }}
  metrics:
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: {{ .Values.keycloak.hpa.memory.averageUtilization }}
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: {{ .Values.keycloak.hpa.cpu.averageUtilization }}
  behavior:
    scaleDown:
      stabilizationWindowSeconds: {{ .Values.keycloak.hpa.stabilizationWindowSeconds }}
      policies:
        - type: Pods
          value: 1
          periodSeconds: {{ .Values.keycloak.hpa.periodSeconds }}
{{- end }}

你能用以下信息编辑你的问题吗:1。您希望实现的预期行为是什么?2.当前的版本是什么?您能确保安装了metric server吗?如果您没有安装,请告诉我,我将发布如何正确安装的答案我确实安装了metric server在不同的Kubernetes版本上,
autoscaling/v2beta2
API是否不同?文档中说“从v1.18开始,v2beta2 API允许通过HPA行为字段配置缩放行为。”@MikhailJanowski如前所述:从v1.18开始。您当前的K8s版本是1.14。即使启用了自动缩放/v2beta2,这也不起作用。最简单的方法是升级到1.18。