7
votes

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
2
For what it's worth, this is about as deep as I could get in the k8s documentation, but I still can't figure out the logic for determining the possible metrics to monitor kubernetes.io/docs/reference/generated/kubernetes-api/v1.15/… . An example would help me understand, I guess.Vinay B

2 Answers

6
votes

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

2
votes

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