Kubernetes HPA deployment cannot find target resource Kubernetes HPA deployment cannot find target resource kubernetes kubernetes

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.