Pode definir conjuntos de atributos de nós e definições de dimensionamento automático que o Google Kubernetes Engine (GKE) usa para criar nós para executar pods através das ComputeClasses. Esta página descreve como funcionam as ComputeClasses, os exemplos de utilização e as vantagens, bem como os tipos de ComputeClasses disponíveis.
Estas informações destinam-se às seguintes pessoas:
- Arquitetos da nuvem e engenheiros de plataformas que querem reduzir os custos gerais associados à gestão da infraestrutura de clusters.
- Operadores de apps e SREs que querem focar-se em cargas de trabalho operacionais sem pensar na infraestrutura subjacente.
Acerca das ComputeClasses e da escala automática de clusters
Uma ComputeClass é um conjunto de atributos de nós e definições de escala automática que existe como um objeto da API Kubernetes num cluster do GKE. Pode selecionar uma ComputeClass em qualquer carga de trabalho do Kubernetes que implementar. A escala automática do cluster do GKE usa os atributos numa ComputeClass para criar nós para cargas de trabalho.
Os engenheiros de plataformas podem usar ComputeClasses para configurar a infraestrutura para vários tipos de cargas de trabalho, de modo que cada novo nó seja otimizado para os requisitos específicos das suas aplicações. As ComputeClasses melhoram a velocidade e a flexibilidade do dimensionamento automático do GKE e oferecem-lhe um método declarativo de configuração das opções de infraestrutura nos seus clusters. Para mais informações, consulte a secção Vantagens da utilização de ComputeClasses.
As capacidades e as funcionalidades específicas do GKE só estão disponíveis com as ComputeClasses, como as seguintes:
- Prioridades de cálculo alternativas: defina vários conjuntos de configurações de infraestrutura numa ComputeClass, priorizadas com base nas suas preferências. Durante o dimensionamento, se a configuração mais preferida não estiver disponível, o GKE recorre à configuração seguinte.
- Migração ativa para nós de prioridade mais elevada: quando configurado, o GKE substitui automaticamente os nós que estão mais abaixo na sua lista de prioridades alternativas por nós que estão mais acima nessa lista ao longo do tempo. Como resultado, os seus pods acabam por ser executados nos nós mais preferidos numa ComputeClass, mesmo que esse hardware não estivesse disponível quando criou a carga de trabalho.
- Autopilot no GKE Standard: execute cargas de trabalho no modo Autopilot para usar funcionalidades do Autopilot, como a plataforma de computação otimizada para contentores e a faturação baseada em pods, mesmo em clusters Standard. O GKE gere estes nós e cargas de trabalho, oferecendo-lhe as vantagens do modo Autopilot em qualquer cluster.
Vantagens das ComputeClasses
As ComputeClasses oferecem aos administradores e operadores da plataforma vantagens como as seguintes:
- Melhoria da obtenção de recursos: as ComputeClasses expandem as capacidades da escala automática do cluster do GKE. As funcionalidades da ComputeClass, como as prioridades de alternativa e os parâmetros de consolidação de nós, podem reduzir o risco de os pods ficarem presos num estado pendente e aumentar o intervalo de opções que pode usar para dimensionar os seus nós.
- Configuração declarativa ao nível da plataforma: as ComputeClasses permitem que os engenheiros de plataforma descrevam declarativamente as configurações dos nós para vários tipos de cargas de trabalho. A escala automática do GKE gere a criação e a configuração de nós e conjuntos de nós. Pode integrar as suas ComputeClasses nos pipelines de CI/CD para ter consistência na infraestrutura aprovisionada na sua plataforma.
- Sobrecarga de gestão reduzida: as ComputeClasses reduzem a complexidade da gestão de infraestruturas e cargas de trabalho em grande escala. Os engenheiros de plataformas declaram classes de infraestrutura e os operadores de apps selecionam uma classe relevante numa carga de trabalho. O GKE gere o escalamento, a configuração do hardware dos nós e aplica taints, tolerâncias e etiquetas.
Acerca do recurso personalizado ComputeClass
As ComputeClasses são recursos personalizados do Kubernetes. Pode definir a especificação de uma ComputeClass num ficheiro de manifesto e criá-la nos seus clusters, de forma semelhante à definição e criação dos recursos de carga de trabalho do Kubernetes, como implementações e serviços.
O manifesto de exemplo seguinte define uma ComputeClass denominada n4
:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: n4
spec:
nodePoolAutoCreation:
enabled: true
priorities:
- machineFamily: n4
- machineFamily: n2
whenUnsatisfiable: DoNotScaleUp
Quando um pod seleciona esta ComputeClass, o GKE faz o seguinte quando cria novos nós:
- O GKE cria nós que usam a série de máquinas N4.
- Se a série de máquinas N4 não estiver disponível, o GKE cria nós que usam a série de máquinas N2.
- Se a série de máquinas N2 não estiver disponível, o GKE aguarda até que os recursos fiquem disponíveis para agendar o pod.
Pode controlar várias definições dos seus nós através de ComputeClasses, incluindo aceleradores, definições do sistema de nós, localizações de nós e o comportamento alternativo do GKE quando os recursos de hardware não estão disponíveis. Para mais informações sobre todas as configurações disponíveis para ComputeClasses, consulte a definição de recursos personalizados ComputeClass.
Seleção de ComputeClass em cargas de trabalho
Para usar uma ComputeClass para uma carga de trabalho do GKE, selecione a ComputeClass no manifesto da carga de trabalho usando um seletor de nós para a etiqueta cloud.google.com/compute-class
.
O manifesto de implementação de exemplo seguinte seleciona uma ComputeClass:
Substitua COMPUTE_CLASS
pelo nome de uma ComputeClass que exista no cluster. Por exemplo, pode especificar a n4
ComputeClass a partir da secção Acerca do recurso personalizado ComputeClass ou da autopilot
ComputeClass incorporada.
Configuração do nó nas especificações da carga de trabalho
Os clusters do GKE Autopilot e o aprovisionamento automático de nós no GKE Standard permitem-lhe usar seletores de nós nos seus pods para criar nós com propriedades específicas, como famílias de máquinas, VMs Spot ou GPUs e TPUs. As ComputeClasses permitem-lhe definir centralmente estes requisitos em vez de adicionar seletores individuais a cada carga de trabalho.
Acerca da aplicação de ComputeClasses por predefinição
Pode configurar o GKE para aplicar uma ComputeClass por predefinição aos pods que não selecionam uma ComputeClass específica. Pode definir uma ComputeClass predefinida para namespaces específicos ou para um cluster inteiro. Para mais informações sobre como configurar os seus clusters ou espaços de nomes com uma classe predefinida, consulte o artigo Aplique ComputeClasses aos pods por predefinição.
A tabela seguinte descreve os efeitos da definição de uma ComputeClass como predefinição para um espaço de nomes ou para um cluster:
Efeitos de ComputeClasses predefinidos | |
---|---|
Predefinição ao nível do espaço de nomes |
|
Predefinição ao nível do cluster |
|
Se o GKE aplicar uma ComputeClass predefinida ao nível do espaço de nomes a um pod, esse pod não ativa a ComputeClass predefinida ao nível do cluster, porque o GKE adiciona um seletor de nós para a classe predefinida ao nível do espaço de nomes ao pod.
ComputeClasses predefinidas ao nível do cluster
Quando ativa as ComputeClasses predefinidas ao nível do cluster, um objeto ComputeClass
denominado default
define as regras de dimensionamento automático de nós para o cluster. Se o seu cluster já tiver uma ComputeClass denominada default
, o GKE usa essa configuração da ComputeClass para o cluster. Se o cluster não tiver uma ComputeClass personalizada denominada default
, o GKE comporta-se como se as seguintes regras ComputeClass
se aplicassem:
spec:
whenUnsatisfiable: ScaleUpAnyway
nodePoolAutoCreation:
enabled: true
Por predefinição, o GKE não aplica nenhum comportamento alternativo e não
altera a configuração dos nós com dimensionamento automático. Para aplicar propriedades específicas aos nós com dimensionamento automático por predefinição, tem de implementar uma ComputeClass personalizada denominada default
.
Considere o seguinte quando configurar a classe de computação predefinida ao nível do cluster:
- Para evitar que os pods fiquem presos num estado
Pending
, defina o campospec.whenUnsatisfiable
comoScaleUpAnyway
. Este valor permite que o GKE crie nós mesmo que os pods peçam famílias de máquinas do Compute Engine que não estejam nas regras de prioridade para a classe predefinida ao nível do cluster. Se quiser forçar estes pods a usar as famílias de máquinas que estão na ComputeClass predefinida, defina este campo comoDoNotScaleUp
. - Para restringir as alterações à
default
ComputeClass, use um RBAC ClusterRole para restringir as operações update, patch, delete e create no recursoComputeClass
denominadodefault
. - Para alterar os parâmetros de consolidação de nós predefinidos do escalador automático de clusters,
use o campo
spec.autoscalingPolicy
na especificação ComputeClass. Os parâmetros que especificar para este campo na ComputeClass predefinida ao nível do cluster aplicam-se a todos os nós no cluster. Para mais informações, consulte Defina parâmetros de dimensionamento automático para a consolidação de nós.
O que se segue?
- Saiba mais sobre as ComputeClasses incorporadas
- Saiba mais sobre as ComputeClasses personalizadas
- Leia a ComputeClass CustomResourceDefinition
- Implemente uma ComputeClass e selecione-a numa carga de trabalho