Os administradores de clusters e os operadores de aplicações podem usufruir das vantagens do Google Kubernetes Engine (GKE) Autopilot, como os preços e as definições pré-configuradas, em clusters do modo Standard. Esta página mostra como usar ComputeClasses para implementar uma carga de trabalho do Autopilot num cluster padrão. Já deve estar familiarizado com os seguintes conceitos:
Acerca das ComputeClasses do Autopilot
O GKE fornece recursos personalizados do Kubernetes denominados ComputeClasses que podem ser implementados no seu cluster como quaisquer outros recursos do Kubernetes. Uma ComputeClass define uma lista de configurações de nós, como tipos de máquinas ou VMs Spot. Pode 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 executa os pods no modo Autopilot. Os nós que o GKE cria são geridos pela Google e incluem muitas das definições de segurança e funcionalidades do Autopilot predefinidas. Para mais
informações sobre as implicações da execução de uma carga de trabalho do Autopilot nos
seus clusters Standard, incluindo as diferenças que pode notar
quando implementa essas cargas de trabalho, consulte o artigo
Acerca das cargas de trabalho do modo Autopilot no GKE Standard.
Tipos de ComputeClasses do Autopilot
O GKE fornece ComputeClasses do Autopilot integradas que pode usar para a maioria das cargas de trabalho de uso geral. Também pode configurar uma ComputeClass personalizada nova ou existente para usar o modo Autopilot. O tipo de Autopilot ComputeClass que usa depende de as suas cargas de trabalho precisarem de hardware específico, da seguinte forma:
- Cargas de trabalho de uso geral: use uma das ComputeClasses do Autopilot incorporadas, que colocam pods na plataforma de computação otimizada para contentores.
- Cargas de trabalho que requerem hardware específico: ative o modo Autopilot para qualquer ComputeClass personalizada, implemente essa ComputeClass no cluster e selecione essa ComputeClass nas suas cargas de trabalho.
Para mais informações sobre estas opções, quando as usar e os preços de cada opção, consulte Seleção de hardware em ComputeClasses do Autopilot.
Preços
Os preços do GKE Autopilot aplicam-se às cargas de trabalho e aos nós que usam uma ComputeClass do Autopilot. O modelo de preços que se aplica depende de usar uma ComputeClass do Autopilot incorporada ou uma ComputeClass do Autopilot personalizada. Para mais informações, consulte a secção Preços em "Acerca das cargas de trabalho do modo Autopilot no GKE Standard".
Antes de começar
Antes de começar, certifique-se de que realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ative a API Google Kubernetes Engine
- Se quiser usar a CLI gcloud para esta tarefa,
instale-a e, em seguida,
inicialize-a. Se instalou anteriormente a CLI gcloud, execute
gcloud components update
para obter a versão mais recente.
- Use um cluster padrão do GKE que execute a versão 1.33.1-gke.1107000 ou posterior e esteja inscrito no canal de lançamento rápido. Para criar um novo cluster, consulte o artigo Criar um cluster regional.
- Para evitar rejeições de cargas de trabalho, saiba mais sobre os requisitos e as restrições de segurança do Autopilot. Para mais informações, consulte as definições predefinidas para nós do Autopilot.
Requisitos
Pelo menos, um conjunto de nós no cluster não pode ter contaminações de nós.
Este conjunto de nós é necessário para executar pods do sistema padrão do GKE que não podem ser executados em nós do Autopilot em clusters padrão devido às restrições que o GKE adiciona a esses nós.
Os nós do GKE protegidos são obrigatórios e estão ativados por predefinição.
Tem de usar um cluster nativo de VPC.
Limitações
- Apenas o canal de lançamento rápido é suportado.
- Para atualizar os recursos
ComputeClass
existentes no cluster para usar o modo Autopilot, tem de recriar essa ComputeClass com uma especificação atualizada. Para mais informações, consulte o artigo Ative o Autopilot para uma ComputeClass personalizada existente. - Não pode usar a regra de prioridade
podFamily
nas suas próprias ComputeClasses. Esta regra só está disponível nas ComputeClasses do Autopilot incorporadas. - As ComputeClasses do Autopilot incorporadas não suportam a ativação de nós do GKE confidenciais para todo o cluster. Se ativar os nós do GKE confidenciais para o cluster, todos os novos pods que selecionem as ComputeClasses do Autopilot incorporadas permanecem no estado
Pending
indefinidamente.
Funções e autorizações necessárias
Para obter as autorizações de que precisa para implementar ComputeClasses,
peça ao seu administrador para lhe conceder a função de IAM de
programador do Kubernetes Engine (roles/container.developer
)
no seu cluster ou projeto .
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Selecione uma ComputeClass do Autopilot numa carga de trabalho
Para selecionar uma ComputeClass do Autopilot numa carga de trabalho, use um
seletor de nós
para a etiqueta cloud.google.com/compute-class
. Esta é a mesma etiqueta que usa para selecionar qualquer outra ComputeClass no GKE. Os passos
seguintes mostram como criar uma implementação de exemplo que seleciona uma ComputeClass
e verificar se os pods são executados no modo de piloto automático:
Guarde a implementação de exemplo seguinte como
autopilot-cc-deployment.yaml
:Substitua
COMPUTE_CLASS
pelo nome da classe de computação a usar. Este valor pode ser qualquer uma das seguintes opções:Uma das seguintes ComputeClasses do Autopilot incorporadas, que colocam cargas de trabalho de uso geral na plataforma de computação otimizada para contentores do Autopilot:
autopilot
autopilot-spot
Uma ComputeClass que criou, como a
autopilot-n2-class
ComputeClass da secção Configure uma ComputeClass do Autopilot personalizada.
Implemente a carga de trabalho:
kubectl apply -f autopilot-cc-deployment.yaml
Para verificar se os pods usam o Autopilot, verifique os nomes dos nós anfitriões:
kubectl get pods -l=app=hello -o wide
O resultado é semelhante ao seguinte:
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>
Nesta saída, o prefixo
gk3-
na coluna Node indica que o nó é gerido pelo Autopilot.
Configure uma ComputeClass do Autopilot personalizada
Pode configurar ComputeClasses personalizadas para usar o Autopilot. Use uma ComputeClass do Autopilot personalizada se as suas cargas de trabalho exigirem hardware específico para serem executadas de forma ideal, como GPUs ou uma determinada série de máquinas do Compute Engine.
Se as suas cargas de trabalho não exigirem hardware específico, recomendamos que use uma das ComputeClasses do Autopilot incorporadas. Para selecionar uma ComputeClass do Autopilot integrada, consulte a secção Selecione uma ComputeClass do Autopilot numa carga de trabalho anterior.
Crie uma nova ComputeClass personalizada do Autopilot
Guarde o seguinte exemplo de manifesto 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
Este manifesto inclui os seguintes campos:
autopilot
: ativa o modo de piloto automático para a ComputeClass. Se especificar este campo numa ComputeClass que implementa num cluster do Autopilot, o GKE ignora 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 que o GKE use uma das regras no campopriorities
para novos nós. Se nenhuma destas regras de prioridade puder ser cumprida, o GKE deixa o pod num estadoPending
até que os recursos estejam disponíveis.DoNotScaleUp
é o valor predefinido e recomendado para este campo.
Implemente a ComputeClass:
kubectl apply -f autopilot-n2-class.yaml
Verifique se a ComputeClass existe:
kubectl get computeclasses
O resultado é semelhante ao seguinte:
NAME AGE autopilot-n2-class 3s
Ative o Autopilot para uma ComputeClass personalizada existente
Pode ativar o Autopilot em ComputeClasses personalizadas existentes que estejam num cluster Standard e tenham o campo nodePoolAutoCreation.enabled
na especificação definido como true
. A ativação do Autopilot numa classe de computação que esteja num cluster do Autopilot não tem efeito, porque todo o cluster usa o modo Autopilot.
Depois de ativar o Autopilot para uma ComputeClass existente, o GKE usa o Autopilot para executar novos pods que selecionam a ComputeClass. Se tiver pods existentes em nós padrão que selecionem a ComputeClass do Autopilot, esses pods usam o Autopilot apenas quando são recriados.
Para atualizar uma ComputeClass personalizada existente para usar o modo Autopilot, siga estes passos:
Num editor de texto, atualize o ficheiro de manifesto da ComputeClass existente para adicionar o campo
spec.autopilot
:spec: autopilot: enabled: true
Substitua o recurso
ComputeClass
existente na API Kubernetes pela especificação atualizada:kubectl replace --force -f PATH_TO_UPDATED_MANIFEST
Substitua
PATH_TO_UPDATED_MANIFEST
pelo caminho para o ficheiro de manifesto atualizado.Para acionar a criação de novos nós, 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 esta ComputeClass usam o Autopilot. O GKE não modifica os nós existentes criados antes da atualização.
Valide se a sua carga de trabalho usa o Autopilot
Aceda a uma lista dos pods no seu cluster através do comando
kubectl get
:kubectl get pods --output=custom-columns=Pod:.metadata.name,Node:.spec.nodeName
O resultado é semelhante ao seguinte:
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á a ser executado no modo Autopilot.
Aplique uma ComputeClass do Autopilot por predefinição
O GKE permite-lhe definir uma ComputeClass como predefinição para um espaço de nomes. A classe predefinida do espaço de nomes aplica-se a todos os pods nesse espaço de nomes que não selecionem explicitamente uma ComputeClass diferente. Definir uma ComputeClass do Autopilot como predefinição significa que pode executar todos os pods num espaço de nomes no modo Autopilot por predefinição, a menos que a carga de trabalho selecione uma opção diferente.
Para mais informações, consulte o artigo Configure uma ComputeClass predefinida para um espaço de nomes.
O que se segue?
- Para os parâmetros que pode especificar em ComputeClasses, consulte a ComputeClass CustomResourceDefinition.