Where are the possible metrics for kubernetes autoscaling defined

8/2/2019

I'm trying to play with autoscaling scenarios (currently with microk8s single node personal cluster).

Basic CPU scaling works fine.

For the more complex scenarios, I'm trying to follow the guide at https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics but I can't figure out how / where the possible pod metrics / object metrics are defined / documented. For example, .. where is "packets-per-second" documented .

I can kind of navigate via kubectl or manually exercising the REST APIs but there has to be a better way.

Thanks

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: AverageUtilization
        averageUtilization: 50
  - type: Pods
    pods:
      metric:
        name: packets-per-second ====> where is this name defined/documented ?
      targetAverageValue: 1k
  - type: Object
    object:
      metric:
        name: requests-per-second ====> where is this name defined/documented ?
      describedObject:
        apiVersion: networking.k8s.io/v1beta1
        kind: Ingress
        name: main-route
      target:
        kind: Value
        value: 10k
-- Vinay B
autoscaling
kubernetes
kubernetes-pod
scalability

2 Answers

8/3/2019

CPU or Memory usage in ResourceMetric is provided by kubelet and collected by metric-server

But for packets-per-second and requests-per-second, there are no official provider, so this field can actually be any value, depend on the non-official custom metrics API you deployed.

Some popular custom metrics API are listed at https://github.com/kubernetes/metrics/blob/master/IMPLEMENTATIONS.md

-- menya
Source: StackOverflow

8/4/2019

The GitHub project below provides a lot of information about using custom metrics provided by Prometheus for autoscaling of Pods in Kubernetes.

https://github.com/stefanprodan/k8s-prom-hpa

-- Iman
Source: StackOverflow