Horizontal Pod Autoscaler Operations: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Internal=
=Internal=
* [[Kubernetes_Horizontal_Pod_Autoscaler#Operations|Horizontal Pod Autoscaler]]
* [[Kubernetes_Horizontal_Pod_Autoscaler#Operations|Horizontal Pod Autoscaler]]
* [[Kubernetes Operations]]
=Create an Autoscaler=
=Create an Autoscaler=


A pre-requisite, if we intend the autoscaler to monitor resource metrics, a source of [[Metrics_in_Kubernetes#Resource_Metrics|resource metrics]] must be deployed. The simplest source of resource metrics is the [[Kubernetes Metrics Server|metrics server]].
==CPU-Based Autoscaler==
 
For the autoscaler to work, the pods subject to autoscaling must have their [[Kubernetes_Resource_Management_Concepts#CPU_Request|CPU requests]] set.
 
===With CLI===
{{External|https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#autoscale}}
 
<syntaxhighlight lang='text'>
kubectl autoscale deployment <deployment-name> --cpu-percent=50 --min=1 --max=10
</syntaxhighlight>
 
===With Metadata===
<syntaxhighlight lang='yaml'>
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: example
spec:
  minReplicas: 1
  maxReplicas: 5
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: httpd
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 50
</syntaxhighlight>
 
===Playground===
{{External|https://github.com/ovidiuf/playground/tree/master/kubernetes/horizontal-pod-autoscaler/cpu-based}}
 
=Horizontal Pod Autoscaler Controller Configuration=
==--horizontal-pod-autoscaler-sync-period==
Sets the period of the control loop. By default, the value is 15 seconds.
==--horizontal-pod-autoscaler-tolerance==
See: {{Internal|Kubernetes_Horizontal_Pod_Autoscaler#Autoscaling_Algorithm|Autoscaling Algorithm}}
==--horizontal-pod-autoscaler-initial-readiness-delay==
==--horizontal-pod-autoscaler-cpu-initialization-period==
==--horizontal-pod-autoscaler-downscale-stabilization==
The value for this option is a duration that specifies how long the autoscaler has to wait before another downscale operation can be performed after the current one has completed. The default value is 5 minutes. Also see: {{Internal|Kubernetes_Horizontal_Pod_Autoscaler#Autoscaling_Algorithm|Autoscaling Algorithm}}
==--horizontal-pod-autoscaler-use-rest-clients==
This should be set to true or be unset to configure the autoscaler to read metrics from metrics APIs. Setting this to false switches to Heapster-based autoscaling, which is deprecated. Also see: {{Internal|Kubernetes_Horizontal_Pod_Autoscaler#How_it_Works|How Horizontal Pod Autoscaler Works}}
=Horizontal Pod Autoscaler Controller Troubleshooting=


==With CLI==
Horizontal Pod Autoscaler operations are logged in the controller-manager logs. Failures such as not being able to pull a specific metric from a certain metrics API are logged there.
==With Metadata==

Latest revision as of 20:34, 15 October 2020

Internal

Create an Autoscaler

CPU-Based Autoscaler

For the autoscaler to work, the pods subject to autoscaling must have their CPU requests set.

With CLI

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#autoscale
kubectl autoscale deployment <deployment-name> --cpu-percent=50 --min=1 --max=10

With Metadata

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: example
spec:
  minReplicas: 1
  maxReplicas: 5
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: httpd
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 50

Playground

https://github.com/ovidiuf/playground/tree/master/kubernetes/horizontal-pod-autoscaler/cpu-based

Horizontal Pod Autoscaler Controller Configuration

--horizontal-pod-autoscaler-sync-period

Sets the period of the control loop. By default, the value is 15 seconds.

--horizontal-pod-autoscaler-tolerance

See:

Autoscaling Algorithm

--horizontal-pod-autoscaler-initial-readiness-delay

--horizontal-pod-autoscaler-cpu-initialization-period

--horizontal-pod-autoscaler-downscale-stabilization

The value for this option is a duration that specifies how long the autoscaler has to wait before another downscale operation can be performed after the current one has completed. The default value is 5 minutes. Also see:

Autoscaling Algorithm

--horizontal-pod-autoscaler-use-rest-clients

This should be set to true or be unset to configure the autoscaler to read metrics from metrics APIs. Setting this to false switches to Heapster-based autoscaling, which is deprecated. Also see:

How Horizontal Pod Autoscaler Works

Horizontal Pod Autoscaler Controller Troubleshooting

Horizontal Pod Autoscaler operations are logged in the controller-manager logs. Failures such as not being able to pull a specific metric from a certain metrics API are logged there.