Nesta página, você aprende a escalonar um aplicativo implantado no Google Kubernetes Engine (GKE).
Visão geral
Ao implantar um aplicativo no GKE, você define quantas réplicas do aplicativo pretende executar. Ao escalonar um aplicativo, você aumenta ou diminui o número de réplicas.
Cada réplica do aplicativo representa um pod do Kubernetes que encapsula os contêineres desse aplicativo.
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a Google Cloud CLI para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando
gcloud components update
.
Como inspecionar um aplicativo
Antes de escalonar o aplicativo, é preciso inspecioná-lo para garantir que esteja íntegro.
Para ver todos os aplicativos implantados no cluster, execute o comando a seguir:
kubectl get CONTROLLER
Substitua CONTROLLER
por deployments
, statefulsets
ou outro
tipo de objeto controlador.
Por exemplo, se você executar kubectl get deployments
e tiver criado apenas uma
implantação, a saída do comando será semelhante a esta:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
my-app 1 1 1 1 10m
A saída desse comando é semelhante para todos os objetos, mas pode parecer um pouco diferente. Nas implantações, a saída tem seis colunas:
NAME
lista os nomes das implantações no cluster.DESIRED
exibe o número pretendido de réplicas ou o estado pretendido do aplicativo, que você define ao criar a implantação.CURRENT
mostra quantas réplicas estão em execução atualmente.UP-TO-DATE
exibe o número de réplicas que foram atualizadas para atingir o estado desejado.AVAILABLE
exibe quantas réplicas do aplicativo estão disponíveis para os usuários.AGE
exibe o tempo de execução do aplicativo no cluster.
Neste exemplo, há apenas uma implantação, my-app
, que tem apenas uma
réplica porque seu estado desejado é uma réplica. Você define o estado pretendido no momento da criação, mas pode alterá-lo a qualquer momento dimensionando o aplicativo.
Como inspecionar StatefulSets
Antes de escalonar um StatefulSet, é preciso inspecioná-lo executando o seguinte comando:
kubectl describe statefulset my-app
Na saída desse comando, verifique o campo Status dos pods. Se o valor Failed
for maior que 0
, o escalonamento poderá falhar.
Se um StatefulSet parecer não íntegro, execute estas etapas:
Receba uma lista de pods e veja quais deles não são íntegros:
kubectl get pods
Remova o pod não íntegro:
kubectl delete POD_NAME
Tentar escalonar um StatefulSet enquanto ele estiver não íntegro pode torná-lo indisponível.
Como escalonar um aplicativo
Nas seções a seguir, você verá cada método que é possível usar para escalonar um aplicativo.
O método kubectl scale
é a maneira mais rápida de escalonar. No entanto, talvez você prefira
outro método em algumas situações, como ao atualizar arquivos de configuração
ou ao executar modificações no local.
kubectl scale
O comando kubectl scale
permite alterar instantaneamente o número de réplicas que você quer executar no aplicativo.
Para usar kubectl scale
, especifique o novo número de réplicas definindo
a sinalização --replicas
. Por exemplo, para escalonar my-app
para quatro réplicas, execute o comando a seguir, substituindo CONTROLLER
por deployment
, statefulset
ou outro tipo de objeto controlador:
kubectl scale CONTROLLER my-app --replicas 4
Se for bem-sucedida, a saída desse comando será semelhante a deployment
"my-app" scaled
.
Em seguida, execute:
kubectl get CONTROLLER my-app
A saída será semelhante a:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
my-app 4 4 4 4 15m
kubectl apply
É possível usar kubectl apply
para aplicar um novo arquivo de configuração a um objeto controlador existente. kubectl
apply
é útil para fazer várias alterações para um recurso e pode ser
útil para usuários que preferem gerenciar recursos em arquivos de configuração.
Para escalonar usando kubectl apply
, o arquivo de configuração fornecido
precisa incluir um novo número de réplicas no campo replicas
da especificação do objeto.
Veja a seguir uma versão atualizada do arquivo de configuração para
o objeto my-app
de exemplo. O exemplo mostra uma implantação, portanto, se você
usar outro tipo de controlador, como StatefulSet, altere kind
proporcionalmente. Esse exemplo funciona melhor em um cluster com pelo menos três nós.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: app
template:
metadata:
labels:
app: app
spec:
containers:
- name: my-container
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:2.0
Neste arquivo, o valor do campo replicas
é 3
. Quando este
arquivo de configuração é aplicado, o objeto my-app
é dimensionado para três réplicas.
Para aplicar um arquivo de configuração atualizado, execute o comando a seguir:
kubectl apply -f config.yaml
Em seguida, execute:
kubectl get CONTROLLER my-app
A saída será semelhante a:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
my-app 3 3 3 3 15m
Console
Para escalonar uma carga de trabalho no console do Google Cloud, execute as seguintes etapas:
Acesse a página Cargas de trabalho no console do Google Cloud.
Na lista de cargas de trabalho, clique no nome da carga de trabalho que você quer escalonar.
Clique em list Ações > Escalonar > Editar réplicas.
Insira o novo número de Réplicas da carga de trabalho.
Clique em Escala.
Como fazer escalonamento automático de implantações
É possível fazer o escalonamento automático de implantações com base na utilização de CPU dos pods usando kubectl
autoscale
ou no menu "Cargas de trabalho do GKE" do
console do Google Cloud.
kubectl autoscale
kubectl autoscale
cria um objeto HorizontalPodAutoscaler
(ou HPA) que segmenta um recurso especificado
(chamado de meta de escalonamento) e o dimensiona conforme necessário. O HPA ajusta periodicamente o número de réplicas da meta de escalonamento para corresponder à utilização média de CPU que você especifica.
Quando você usa kubectl autoscale
, especifica um número máximo e mínimo de
réplicas para o aplicativo, bem como uma meta de utilização da CPU. Por exemplo, para definir o número máximo de réplicas como seis e o mínimo como quatro, com uma meta de utilização da CPU de 50%, execute o comando abaixo:
kubectl autoscale deployment my-app --max 6 --min 4 --cpu-percent 50
Neste comando, a sinalização --max
é obrigatória. A sinalização --cpu-percent
é a meta
de utilização de CPU em todos os pods. Este comando não escalona
imediatamente a implantação para seis réplicas, a menos que já exista
uma demanda sistêmica.
Depois de executar kubectl autoscale
, o objeto HorizontalPodAutoscaler
é
criado e direcionado ao aplicativo. Quando há alteração na carga, o objeto
aumenta ou diminui as réplicas do aplicativo.
Para ver uma lista dos objetos HorizontalPodAutoscaler
no cluster, execute:
kubectl get hpa
Para ver um objeto HorizontalPodAutoscaler
específico no cluster, execute:
kubectl get hpa HPA_NAME
Substitua HPA_NAME
pelo nome do
objeto HorizontalPodAutoscaler
.
Para ver a configuração HorizontalPodAutoscaler
:
kubectl get hpa HPA_NAME -o yaml
A saída deste comando é semelhante a:
apiVersion: v1
items:
- apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
creationTimestamp: ...
name: HPA_NAME
namespace: default
resourceVersion: "664"
selfLink: ...
uid: ...
spec:
maxReplicas: 10
minReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: HPA_NAME
targetCPUUtilizationPercentage: 50
status:
currentReplicas: 0
desiredReplicas: 0
kind: List
metadata: {}
resourceVersion: ""
selfLink: ""
Neste exemplo de saída, o campo targetCPUUtilizationPercentage
contém o
valor de porcentagem 50
transmitido do exemplo kubectl autoscale
.
Para ver uma descrição detalhada de um objeto HorizontalPodAutoscaler
específico
no cluster:
kubectl describe hpa HPA_NAME
Modifique o HorizontalPodAutoscaler
aplicando um novo arquivo de configuração com kubectl apply
, usando kubectl edit
ou kubectl patch
.
Para excluir um objeto HorizontalPodAutoscaler
:
kubectl delete hpa HPA_NAME
Console
Para fazer o escalonamento automático de uma implantação, execute as etapas abaixo:
Acesse a página Cargas de trabalho no console do Google Cloud.
Na lista de cargas de trabalho, clique no nome da implantação que você quer escalonar automaticamente.
Clique em list Ações > Escalonamento automático.
Insira o Número máximo de réplicas e, como opção, o Número mínimo de réplicas da implantação.
Em Métricas de escalonamento automático, selecione e configure as métricas conforme desejado.
Clique em Escalonamento automático.
Como fazer escalonamento automático com métricas personalizadas
É possível escalonar as implantações com base em métricas personalizadas exportadas do Cloud Monitoring.
Para saber como usar métricas personalizadas para fazer o escalonamento automático de implementações, consulte o tutorial Implantações de escalonamento automático com métricas personalizadas.