O processo para escalar uma aplicação é completamente abstraído do usuário final. Você precisa apenas dizer para o Deployment que deseja escalar para um determinado número de réplicas. O Kubernetes cuidará do resto. Na imagem abaixo escalamos a aplicação de 1 para 5 réplicas.

Figure 6-6. Scaling a Deployment

Figure 6-6. Scaling a Deployment

Existem opções: utilizar o comando scale ou alterar o valor do atributo replicas no live object. Os comandos a seguir demonstram o efeito de escalar um Deployment com o comando scale.

# Exibindo os recursos antes de aplicar o scaling
$ kubectl get deployments,replicasets,pods            
	NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
	deployment.apps/my-deploy   1/1     1            1           21m

	NAME                                   DESIRED   CURRENT   READY   AGE
	replicaset.apps/my-deploy-79fbb965cd   1         1         1       21m

	NAME                             READY   STATUS    RESTARTS   AGE
	pod/my-deploy-79fbb965cd-7kd72   1/1     Running   0          11m

# Realizando scaling para 5 replicas via comando scale
$ kubectl scale deployment my-deploy --replicas=5
	deployment.apps/my-deploy scaled

# Exibindo os recursos depois de aplicar o scaling
$ kubectl get deployments,replicasets,pods       
	NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
	deployment.apps/my-deploy   5/5     5            5           23m
	
	NAME                                   DESIRED   CURRENT   READY   AGE
	replicaset.apps/my-deploy-79fbb965cd   5         5         5       23m
	
	NAME                             READY   STATUS    RESTARTS   AGE
	pod/my-deploy-79fbb965cd-4nj4d   1/1     Running   0          15s
	pod/my-deploy-79fbb965cd-7kd72   1/1     Running   0          13m
	pod/my-deploy-79fbb965cd-ghnqk   1/1     Running   0          15s
	pod/my-deploy-79fbb965cd-rdlw9   1/1     Running   0          15s
	pod/my-deploy-79fbb965cd-vkpsz   1/1     Running   0          15s

# Exibindo eventos de scaling no Deployment
$ kubectl describe deployments.apps my-deploy
	(...)
	Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  99s   deployment-controller  Scaled up replica set my-deploy-79fbb965cd to 5

Editando a quantidade de replicas em um live object.

# Cenário Inicial, apenas uma replica
$ kubectl get deployments,replicasets,pods            
	NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
	deployment.apps/my-deploy   1/1     1            1           17m
	
	NAME                                   DESIRED   CURRENT   READY   AGE
	replicaset.apps/my-deploy-58ddd7b585   1         1         1       11m
	
	NAME                             READY   STATUS    RESTARTS   AGE
	pod/my-deploy-58ddd7b585-28skw   1/1     Running   0          11m
$ kubectl edit deployments.apps my-deploy

	# Please edit the object below. Lines beginning with a '#' will be ignored,
	# and an empty file will abort the edit. If an error occurs while saving this
	# reopened with the relevant failures.
	#
	apiVersion: apps/v1
	kind: Deployment
	metadata:
	  generation: 3
	  labels:
	    app: my-deploy
	    section: 06-pod-design
	  name: my-deploy
	  namespace: develop
	spec:
	  progressDeadlineSeconds: 600
	  **replicas: 1  ## Alterar a quantidade de replicas para 5 e salvar ##**
	  revisionHistoryLimit: 10

	**deployment.apps/my-deploy edited**
# Resultado logo após salvar a alteração no LiveObject
$ kubectl get deployments,replicasets,pods
	NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
	deployment.apps/my-deploy   3/5     5            3           18m
	
	NAME                                   DESIRED   CURRENT   READY   AGE
	replicaset.apps/my-deploy-58ddd7b585   5         5         3       12m
	
	NAME                             READY   STATUS              RESTARTS   AGE
	pod/my-deploy-58ddd7b585-28skw   1/1     Running             0          12m
	pod/my-deploy-58ddd7b585-584zx   0/1     ContainerCreating   0          3s
	pod/my-deploy-58ddd7b585-8w782   0/1     ContainerCreating   0          3s
	pod/my-deploy-58ddd7b585-gx4d9   1/1     Running             0          3s
	pod/my-deploy-58ddd7b585-nqvj4   1/1     Running             0          3s

# Resultado final
$ kubectl get deployments,replicasets,pods
	NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
	deployment.apps/my-deploy   5/5     5            5           21m
	
	NAME                                   DESIRED   CURRENT   READY   AGE
	replicaset.apps/my-deploy-58ddd7b585   5         5         5       16m
	
	NAME                             READY   STATUS    RESTARTS   AGE
	pod/my-deploy-58ddd7b585-28skw   1/1     Running   0          16m
	pod/my-deploy-58ddd7b585-584zx   1/1     Running   0          3m25s
	pod/my-deploy-58ddd7b585-8w782   1/1     Running   0          3m25s
	pod/my-deploy-58ddd7b585-gx4d9   1/1     Running   0          3m25s
	pod/my-deploy-58ddd7b585-nqvj4   1/1     Running   0          3m25s