Os administradores de cluster e os operadores de aplicativos podem aproveitar os benefícios do GKE Autopilot, como preços e configurações predefinidas, em clusters do modo Standard. Nesta página, mostramos como usar ComputeClasses para implantar uma carga de trabalho do Autopilot em um cluster Standard. Você já precisa conhecer os seguintes conceitos:
Sobre as ComputeClasses do Autopilot
O GKE fornece recursos personalizados do Kubernetes chamados ComputeClasses que podem ser implantados no seu cluster como qualquer outro recurso do Kubernetes. Uma ComputeClass define uma lista de configurações de nós, como tipos de máquinas ou VMs Spot. É possível selecionar ComputeClasses nas suas cargas de trabalho, o que indica ao GKE que todos os novos nós devem usar uma das configurações nessa lista.
Se uma carga de trabalho selecionar uma ComputeClass com o campo autopilot
ativado,
o GKE vai executar os pods no modo Autopilot. Os
nós criados pelo GKE são gerenciados pelo Google e incluem muitos dos
recursos padrão do Autopilot e configurações de segurança. Para mais informações sobre as implicações de executar uma carga de trabalho do Autopilot nos clusters padrão, incluindo diferenças que você pode notar ao implantar essas cargas de trabalho, consulte Sobre cargas de trabalho do modo Autopilot no GKE Standard.
Tipos de ComputeClasses do Autopilot
O GKE oferece ComputeClasses integradas do Autopilot que podem ser usadas na maioria das cargas de trabalho de uso geral. Também é possível configurar uma ComputeClass personalizada nova ou atual para usar o modo Autopilot. O tipo de ComputeClass do Autopilot que você usa depende de se as cargas de trabalho precisam de hardware específico, da seguinte maneira:
- Cargas de trabalho de uso geral: use uma das ComputeClasses integradas do Autopilot, que colocam pods na plataforma de computação otimizada para contêineres.
- Cargas de trabalho que exigem hardware específico: ative o modo Autopilot para qualquer ComputeClass personalizada, implante essa ComputeClass no cluster e selecione essa ComputeClass nas suas cargas de trabalho.
Para mais informações sobre essas opções, quando usá-las e os preços de cada uma, consulte Seleção de hardware em ComputeClasses do Autopilot.
Preços
Os preços do GKE Autopilot se aplicam às cargas de trabalho e aos nós que usam uma ComputeClass do Autopilot. O modelo de preços aplicável depende de você usar uma ComputeClass do Autopilot integrada ou personalizada. Para mais informações, consulte Preços em "Sobre cargas de trabalho do modo Autopilot no GKE Standard".
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 CLI do Google Cloud para essa tarefa,
instale e inicialize a
gcloud CLI. Se você instalou a gcloud CLI anteriormente, instale a versão
mais recente executando
gcloud components update
.
- Use um cluster do GKE Standard que execute a versão 1.33.1-gke.1107000 ou mais recente e esteja registrado no canal de lançamento rápido. Para criar um cluster, consulte Como criar um cluster regional.
- Para evitar rejeições de carga de trabalho, saiba mais sobre os requisitos e as restrições de segurança do Autopilot. Para mais informações, consulte configurações predefinidas para nós do Autopilot.
Requisitos
Pelo menos um pool de nós no cluster não pode ter taints de nó.
Esse pool de nós é necessário para executar pods do sistema GKE Standard que não podem ser executados em nós do Autopilot em clusters Standard devido aos taints que o GKE adiciona a esses nós.
Os nós protegidos do GKE são obrigatórios e ativados por padrão.
Você precisa usar um cluster nativo de VPC.
Limitações
- Somente o canal de lançamento rápido é compatível.
- Para atualizar os recursos
ComputeClass
atuais no cluster para usar o modo Autopilot, é necessário recriar a ComputeClass com uma especificação atualizada. Para mais informações, consulte Ativar o Autopilot para uma ComputeClass personalizada. - Não é possível usar a regra de prioridade
podFamily
nas suas próprias ComputeClasses. Essa regra está disponível apenas nas ComputeClasses integradas do Autopilot. - As ComputeClasses integradas do Autopilot não oferecem suporte à ativação dos Confidential GKE Nodes para todo o cluster. Se você ativar
os nós confidenciais do GKE para o cluster, todos os novos pods que selecionarem as
ComputeClasses integradas do Autopilot vão permanecer no estado
Pending
indefinidamente.
Papéis e permissões necessárias
Para receber as permissões necessárias
para implantar ComputeClasses,
peça ao administrador para conceder a você o
papel do IAM de Desenvolvedor do Kubernetes Engine (roles/container.developer
)
no seu cluster ou projeto .
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Selecionar uma ComputeClass do Autopilot em uma carga de trabalho
Para selecionar uma ComputeClass do Autopilot em uma carga de trabalho, use um
seletor de nós
para o rótulo cloud.google.com/compute-class
. É o mesmo rótulo que você usa para selecionar qualquer outra ComputeClass no GKE. As etapas a seguir mostram como criar uma implantação de exemplo que seleciona uma ComputeClass e verifica se os pods são executados no modo Autopilot:
Salve o seguinte exemplo de implantação como
autopilot-cc-deployment.yaml
:Substitua
COMPUTE_CLASS
pelo nome da classe de computação a ser usada. Esse valor pode ser qualquer um dos seguintes:Uma das seguintes ComputeClasses integradas do Autopilot, que colocam cargas de trabalho de uso geral na plataforma de computação otimizada para contêineres do Autopilot:
autopilot
autopilot-spot
Uma ComputeClass criada por você, como a
autopilot-n2-class
ComputeClass da seção Configurar uma ComputeClass personalizada do Autopilot.
Implantar a carga de trabalho:
kubectl apply -f autopilot-cc-deployment.yaml
Para verificar se os pods usam o Autopilot, confira os nomes dos nós do host:
kubectl get pods -l=app=hello -o wide
O resultado será assim:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES helloweb-79b9f6f75-5wwc9 1/1 Running 0 152m 10.102.1.135 gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g <none> <none> helloweb-79b9f6f75-9skb9 1/1 Running 0 4d3h 10.102.0.140 gk3-cluster-1-nap-10abc8ya1-632bac02-hjl6 <none> <none> helloweb-79b9f6f75-h7bdv 1/1 Running 0 152m 10.102.1.137 gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g <none> <none>
Nessa saída, o prefixo
gk3-
na coluna Nó indica que o nó é gerenciado pelo Autopilot.
Configurar uma ComputeClass personalizada do Autopilot
É possível configurar ComputeClasses personalizadas para usar o Autopilot. Use uma ComputeClass personalizada do Autopilot se as cargas de trabalho exigirem hardware específico para serem executadas de maneira ideal, como GPUs ou uma determinada série de máquinas do Compute Engine.
Se as cargas de trabalho não exigirem hardware específico, recomendamos que você use uma das ComputeClasses integradas do Autopilot. Para selecionar uma ComputeClass do Autopilot integrada, consulte a seção Selecionar uma ComputeClass do Autopilot em uma carga de trabalho acima.
Criar uma ComputeClass personalizada do Autopilot
Salve o seguinte manifesto de exemplo ComputeClass como
autopilot-n2-class.yaml
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: autopilot-n2-class spec: autopilot: enabled: true priorities: - machineFamily: n2 spot: true minCores: 64 - machineFamily: n2 spot: true - machineFamily: n2 spot: false activeMigration: optimizeRulePriority: true whenUnsatisfiable: DoNotScaleUp
Esse manifesto inclui os seguintes campos:
autopilot
: ativa o modo Autopilot para a ComputeClass. Se você especificar esse campo em uma ComputeClass implantada em um cluster do Autopilot, o GKE vai ignorar o campo.priorities
: define uma matriz de três configurações diferentes da família de máquinas N2.activeMigration
: permite que o GKE migre pods para configurações que estão mais acima na lista de prioridades quando os recursos ficam disponíveis.whenUnsatisfiable
: o valor deDoNotScaleUp
neste campo torna obrigatório para o GKE usar uma das regras no campopriorities
para novos nós. Se nenhuma dessas regras de prioridade puder ser atendida, o GKE deixará o pod em um estadoPending
até que os recursos estejam disponíveis.DoNotScaleUp
é o valor padrão e recomendado para esse campo.
Implante a ComputeClass:
kubectl apply -f autopilot-n2-class.yaml
Verifique se a ComputeClass existe:
kubectl get computeclasses
O resultado será assim:
NAME AGE autopilot-n2-class 3s
Ativar o Autopilot para uma ComputeClass personalizada
É possível ativar o Autopilot em ComputeClasses personalizadas que estão
em um cluster Standard e têm o campo nodePoolAutoCreation.enabled
na especificação definido como true
. Ativar o Autopilot em uma classe de computação
que está em um cluster do Autopilot não tem efeito, porque todo o
cluster usa o modo Autopilot.
Depois de ativar o Autopilot para uma ComputeClass, o GKE usa o Autopilot para executar novos pods que selecionam a ComputeClass. Se você tiver pods em nós padrão que selecionam a ComputeClass do Autopilot, esses pods usarão o Autopilot apenas quando forem recriados.
Para atualizar uma ComputeClass personalizada e usar o modo Autopilot, siga estas etapas:
Em um editor de texto, atualize o arquivo de manifesto da ComputeClass para adicionar o campo
spec.autopilot
:spec: autopilot: enabled: true
Substitua o recurso
ComputeClass
atual na API Kubernetes pela especificação atualizada:kubectl replace --force -f PATH_TO_UPDATED_MANIFEST
Substitua
PATH_TO_UPDATED_MANIFEST
pelo caminho para o arquivo de manifesto atualizado.Para acionar a criação de um novo nó, recrie todas as cargas de trabalho que usam a classe de computação.
Depois de aplicar o manifesto atualizado, todos os nós novos que o GKE criar para essa ComputeClass vão usar o Autopilot. O GKE não modifica os nós criados antes da atualização.
Verificar se a carga de trabalho usa o Autopilot
Para receber uma lista dos pods no cluster, use o comando
kubectl get
:kubectl get pods --output=custom-columns=Pod:.metadata.name,Node:.spec.nodeName
O resultado será assim:
Pod Node helloweb-84c865764b-nzhxt gk3-cluster-1-pool-3-68fc8dca-t54b # lines omitted for clarity
O prefixo
gk3-
no nome do nó indica que o pod está sendo executado no modo Autopilot.
Aplicar uma ComputeClass do Autopilot por padrão
O GKE permite definir uma ComputeClass como padrão para um namespace. A classe padrão do namespace se aplica a todos os pods nesse namespace que não selecionam explicitamente uma ComputeClass diferente. Definir uma ComputeClass do Autopilot como padrão significa que você pode executar todos os pods em um namespace no modo Autopilot por padrão, a menos que a carga de trabalho selecione uma opção diferente.
Para mais informações, consulte Configurar uma ComputeClass padrão para um namespace.
A seguir
- Para os parâmetros que podem ser especificados em ComputeClasses, consulte a CustomResourceDefinition de ComputeClass.