user2698993
user2698993

Reputation: 411

kubectl get hpa targets:unknow

I have installed kubeadm. Heapster show me metrics, but hpa no

kubectl get hpa

NAME      REFERENCE          TARGETS          MINPODS   MAXPODS   REPLICAS   AGE

httpd     Deployment/httpd   <unknown> / 2%   2         5         2          19m

kubeadm version

kubeadm version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.6", GitCommit:"7fa1c1756d8bc963f1a389f4a6937dc71f08ada2", GitTreeState:"clean", BuildDate:"2017-06-16T18:21:54Z", GoVersion:"go1.7.6", Compiler:"gc", Platform:"linux/amd64"}

docker version

Client:

Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   b9f10c9
 Built:        Wed Jun  1 22:00:43 2016
 OS/Arch:      linux/amd64

Upvotes: 16

Views: 25702

Answers (5)

Francisco Cardoso
Francisco Cardoso

Reputation: 1978

Make sure your spec has this part properly configured:

 metrics:
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage}}

In my case I had name: Memory with uppercase M and that cost me a day to find out.

Upvotes: 0

Harsh Manvar
Harsh Manvar

Reputation: 30170

you have to enable the metrics server which you can do it using the helm chart

helm chart is easy way to add the metrics server

helm install stable/metrics-server

wait for 3-4 minutes after pods started running and you open kubectl get hpa you can check there target is showing values.

Upvotes: 0

Paulina
Paulina

Reputation: 141

You may have had to enable a metrics-server. Heapster is now deprecated. Also make sure you have Kubernetes version greater than 1.7. You can check this buy typing kubectl get nodes.

You can enable the metrics server by looking at the minikube addons.

minikube addons list gives you the list of addons.

minikube addons enable metrics-server enables metrics-server.

Wait a few minutes, then if you type kubectl get hpa the percentage for the TARGETS <unknown> should appear.

Upvotes: 14

Pamir Erdem
Pamir Erdem

Reputation: 186

In kubernetes it can say unknown for hpa. In this situation you should check several places.

  1. In K8s 1.9 uses custom metrics. so In order to work your k8s cluster

with heapster you should check kube-controller-manager. Add these parameters.

  • --horizontal-pod-autoscaler-use-rest-clients=false
  • --horizontal-pod-autoscaler-sync-period=10s

based on https://github.com/kubernetes/kubernetes/issues/57673

  1. Case you should change your heapster deployment.

I found this link very informative https://blog.inkubate.io/deploy-kubernetes-1-9-from-scratch-on-vmware-vsphere/

Upvotes: 0

user2698993
user2698993

Reputation: 411

I found the solution:

kubectl describe hpa

failed to get cpu utilization: missing request for cpu on container httpd in pod default/httpd-796666570-2h1c6

Change the yaml of deployment and add:

resources:
  requests:
    cpu:400m

Then kubectl describe hpa

failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from heapster

Wait a few minutes and all works fine.

Upvotes: 15

Related Questions