9

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
  • 673
  • 8
  • 21
  • 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 https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.15/#podsmetricsource-v2beta2-autoscaling . An example would help me understand, I guess. – Vinay B Aug 02 '19 at 20:13

2 Answers2

7

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
  • 1,459
  • 7
  • 8
  • Thanks ..i figured the same going through the documentation . It really should be mentioned more explicitly . Maybe I'll try and take a stab at improving the autoscaling docs section of the k8s – Vinay B Aug 04 '19 at 22:29
2

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
  • 1,017
  • 10
  • 26