Kubernetes HPA deployment cannot find target resource
The way I solved it is by adding the cpu resources to the deployment's file and keeping only the necessary HPA deployment yaml fields.
HPA deployment file
apiVersion: autoscaling/v1kind: HorizontalPodAutoscalermetadata: name: {{ .Values.name }} labels: app: {{ .Values.name }} namespace: {{ .Values.namespace }}spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: {{ .Values.name }} minReplicas: {{ .Values.spec.replicaCountMin }} maxReplicas: {{ .Values.spec.replicaCountMax }} metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: {{ .Values.spec.cpuUtil }}
Deployment file - resource addition
apiVersion: apps/v1beta2kind: Deploymentmetadata: name: {{ .Values.name }} labels: app: {{ .Values.name }} namespace: {{ .Values.namespace }}spec: replicas: {{ .Values.replicaCount }} template: metadata: labels: app: {{ .Values.name }} release: {{ .Release.Name }} heritage: {{ .Release.Service }} spec: containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" resources: requests: cpu: {{ .Values.request.cpu }} limits: cpu: {{ .Values.limits.cpu }}
You must add this code:
resources:requests:cpu: {{ .Values.request.cpu }}limits:cpu: {{ .Values.limits.cpu }}
Hope it helps :)
It looks like something is wrong with the deployment.
I have tried to reproduce the situation and it looks like you are creating autoscaler from file with kubectl create -f hpa.yaml
that looks for the Deployment/gw-autoscale-t6
that is not present in cluster.
That is why you are getting the following error:
the HPA controller was unable to get the target''s current scale: deployments/scale.apps\ "gw-autoscale-t6" not found"
for my tests I've created a hpa.yaml, applied it and looked for the situation:
$ date && kubectl get hpa && kubectl get deployments php-apache Tue 31 Dec 2019 10:59:37 AM CETNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGEphp-apache Deployment/php-apache <unknown>/50% 1 10 0 10mError from server (NotFound): deployments.extensions "php-apache" not found
it gave me <unknown>
as a TARGETS
value. And Zero as REPLICAS
As you can see, the Deployment itself (the one we are trying to scale with hpa.yaml) doesn't exist yet.
Upon creation of a deployment:
$ kubectl run php-apache --image=gcr.io/google_containers/hpa-example --requests=cpu=200m --expose --port=80service/php-apache createddeployment.apps/php-apache created
I have waited for a minute to let HPA to warm-up and calculate everything:
$ kubectl get hpa -o yamlapiVersion: v1items:- apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: annotations: autoscaling.alpha.kubernetes.io/conditions: '[{"type":"AbleToScale","status":"True","lastTransitionTime":"2019-12-31T09:59:47Z","reason":"ScaleDownStabilized","message":"recent recommendations were higher than current one, applying the highest recent recommendation"},{"type":"ScalingActive","status":"True","lastTransitionTime":"2019-12-31T10:00:33Z","reason":"ValidMetricFound","message":"the HPA was able to successfully calculate a replica count from cpu resource utilization (percentage of request)"},{"type":"ScalingLimited","status":"False","lastTransitionTime":"2019-12-31T10:00:33Z","reason":"DesiredWithinRange","message":"the desired count is within the acceptable range"}]' autoscaling.alpha.kubernetes.io/current-metrics: '[{"type":"Resource","resource":{"name":"cpu","currentAverageUtilization":0,"currentAverageValue":"1m"}}]' creationTimestamp: "2019-12-31T09:49:16Z" name: php-apache... spec: maxReplicas: 10 minReplicas: 1 scaleTargetRef: apiVersion: extensions/v1beta1 kind: Deployment name: php-apache targetCPUUtilizationPercentage: 50 status: currentCPUUtilizationPercentage: 0 currentReplicas: 1 desiredReplicas: 1
And checked again:
$ date && kubectl get hpa && kubectl get deployments php-apache Tue 31 Dec 2019 11:01:16 AM CETNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGEphp-apache Deployment/php-apache 0%/50% 1 10 1 12mNAME READY UP-TO-DATE AVAILABLE AGEphp-apache 1/1 1 1 97s
So now, I can see non-zero value for REPLICA
and TARGETS
shows correct value.
Hope that helps :)P.S. Let me know if you have solved the issue.