Kubernetes自动缩放策略不起作用
我已经在我的HorizontalPodAutoscaler中添加了一些缩放策略,但它们没有被应用。scaleUp和scaleDown行为被忽略。我需要一种方法来阻止豆荚每隔几分钟向上和向下扩展,以响应较小的CPU峰值。理想情况下,HPA将快速扩大以响应更多的流量,但在减少约30分钟的流量后缓慢缩小 我在AWS EKS群集上运行此程序,并根据设置了策略 这可能是EKS或我的K8s版本1.14的限制。我已经运行了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
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。