How do I update a Kubernetes autoscaler? How do I update a Kubernetes autoscaler? kubernetes kubernetes

How do I update a Kubernetes autoscaler?


You can always interactively edit the resources in your cluster. For your autoscale controller called web, you can edit it via:

kubectl edit hpa web

If you're looking for a more programmatic way to update your horizontal pod autoscaler, you would have better luck describing your autoscaler entity in a yaml file, as well. For example, here's a simple Replication Controller, paired with a Horizontal Pod Autoscale entity:

 apiVersion: v1 kind: ReplicationController metadata:   name: nginx spec:   replicas: 2   template:     metadata:       labels:         run: nginx     spec:       containers:       - name: nginx         image: nginx         ports:         - containerPort: 80 --- apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata:   name: nginx   namespace: default spec:   maxReplicas: 3   minReplicas: 2   scaleTargetRef:     apiVersion: v1     kind: ReplicationController     name: nginx

With those contents in a file called nginx.yaml, updating the autoscaler could be done via kubectl apply -f nginx.yaml.


You can use the kubectl patch command as well, to see its current status

kubectl get hpa <autoscaler-name-here> -o json

An example output:

{"apiVersion": "autoscaling/v1","kind": "HorizontalPodAutoscaler","metadata": {    ...    "name": "your-auto-scaler",    "namespace": "your-namespace",    ...},"spec": {    "maxReplicas": 50,    "minReplicas": 2,    "scaleTargetRef": {        "apiVersion": "extensions/v1beta1",        "kind": "Deployment",        "name": "your-deployment"    },    "targetCPUUtilizationPercentage": 40},"status": {    "currentReplicas": 1,    "desiredReplicas": 2,    "lastScaleTime": "2017-12-13T16:23:41Z"}}

If you want to update the minimum number of replicas:

kubectl -n your-namespace patch hpa your-auto-scaler --patch '{"spec":{"minReplicas":1}}'

The same logic applies to other parameters found in the autoscaler configuration, change minReplicas to maxReplicas if you want to update the maximum number of allowed replicas.


First delete the autoscaler and then re-create it:

 kubectl delete hpa web kubectl autoscale -f docker/production/web-controller.yaml --min=2 --max=6