所以我有一个HorizontalPodAutoscaler
设置为我的后端(一个fpm服务器和一个Nginx服务器为Laravel应用程序)。
问题是,当HPA
处于负载状态时,它会扩展pod,但会立即终止它们,甚至不让它们进入运行状态。
指标很好,扩展行为如预期的那样,唯一的问题是扩展后pod立即终止。
有什么问题吗?
编辑:同样的HPA
是在前端使用的,它的工作如预期的那样,问题似乎只在后端。
编辑2:我启用了Cluster Autoscaler
,它完成了它的工作,节点在需要时被添加,然后被清理,所以这不是一个关于可用资源的问题。
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: fpm-server
labels:
tier: backend
layer: fpm
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
tier: backend
layer: fpm
template:
metadata:
labels:
tier: backend
layer: fpm
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: fpm
image: "{{ .Values.fpm.image.repository }}:{{ .Values.fpm.image.tag }}"
ports:
- name: http
containerPort: 9000
protocol: TCP
env:
{{- range $name, $value := .Values.env }}
- name: {{ $name }}
value: "{{ $value }}"
{{- end }}
envFrom:
- secretRef:
name: backend-secrets
resources:
{{- toYaml .Values.resources | nindent 12 }}
hpa.yaml
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: fpm-server-hpa
labels:
tier: backend
layer: fpm
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: fpm-server
minReplicas: {{ .Values.autoscaling.minReplicas }}
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
metrics:
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
{{- end }}
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
{{- end }}
似乎问题出在replicas: {{ .Values.replicaCount }}
定义上。似乎,如果你正在使用HPA,replicas
不能使用。我删除了这条线,HPA开始缩放。