Ryan Clemente
Ryan Clemente

Reputation: 141

Kubernetes HPA pod custom metrics shows as <unknown>

I have managed to install Prometheus and it's adapter and I want to use one of the pod metrics for autoscaling

 kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1" | jq . |grep "pods/http_request".
      "name": "pods/http_request_duration_milliseconds_sum",
      "name": "pods/http_request",
      "name": "pods/http_request_duration_milliseconds",
      "name": "pods/http_request_duration_milliseconds_count",
      "name": "pods/http_request_in_flight",

Checking api I want to use pods/http_request and added it to my HPA configuration

---
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: app
  namespace: app
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: app
  minReplicas: 4
  maxReplicas: 8
  metrics:
 
  - type: Pods
    pods:
      metric:
        name: http_request
      target:
        type: AverageValue
        averageValue: 200

After applying the yaml and check the hpa status it shows up as <unkown>

$ k apply -f app-hpa.yaml
$ k get hpa
NAME                   REFERENCE                         TARGETS                                       
app           Deployment/app           306214400/2000Mi, <unknown>/200 + 1 more...   

But when using other pod metrics such as pods/memory_usage_bytes the value is properly detected

Is there a way to check the proper values for this metric? and how do I properly add it for my hpa configuration

Reference https://www.ibm.com/support/knowledgecenter/SSBS6K_3.2.0/manage_cluster/hpa.html

Upvotes: 1

Views: 885

Answers (1)

Shahabaj S. Shaikh
Shahabaj S. Shaikh

Reputation: 76

1st deploy metrics server, it should be up and running.

$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 

Then in a few sec. metrics server deployed. check HPA it should resolved.

$ kubectl get deployment -A

NAMESPACE     NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
.
.
kube-system   metrics-server       1/1     1            1           34s


$ kubectl get hpa
NAME                  REFERENCE                       TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
ha-xxxx-deployment   Deployment/xxxx-deployment   1%/5%     1         10        1          6h46m

Upvotes: 1

Related Questions