Este documento explica como criar um cluster compartilhado do Kubernetes em uma zona isolada do Google Distributed Cloud (GDC). Um cluster compartilhado abrange vários projetos e inclui serviços abrangentes gerenciados pelo GDC que oferecem uma configuração de cluster do Kubernetes altamente opinativa e menos configurável do que o cluster padrão. Para mais informações sobre clusters Standard, consulte Configurações de cluster do Kubernetes.
Os clusters compartilhados são um recurso zonal e não podem abranger várias zonas. Para operar clusters em um universo de várias zonas, é necessário criar manualmente clusters em cada zona.
Este documento é destinado a públicos-alvo como desenvolvedores de aplicativos no grupo de operadores de aplicativos, que são responsáveis por gerenciar cargas de trabalho de contêineres na organização. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.
Antes de começar
Para receber as permissões necessárias para criar um cluster compartilhado, peça ao administrador do IAM da organização para conceder a você o papel de administrador do cluster de usuário (
user-cluster-admin). Esse papel não está vinculado a um namespace.Planeje os seguintes limites de isolamento físico do Google Distributed Cloud (GDC) para clusters do Kubernetes:
- 16 clusters por organização
- 42 nós de trabalho por cluster e um mínimo de três nós de trabalho
- 4.620 pods por cluster
- 110 pods por nó;
Planejar o bloco CIDR de pod
Para alocar o bloco CIDR de pod do tamanho adequado para suas cargas de trabalho, calcule a quantidade de endereços IP necessários para o cluster do Kubernetes antes de criá-lo. A maioria dos parâmetros de rede não pode ser alterada depois da criação do cluster.
Um cluster do Kubernetes segue a seguinte lógica ao alocar endereços IP:
- O Kubernetes atribui um bloco CIDR
/24com 256 endereços a cada um dos nós. Esse valor segue o máximo padrão de 110 pods por nó para clusters do Kubernetes. - O tamanho do bloco CIDR atribuído a um nó depende do valor máximo de pods por nó.
- O bloco sempre contém, pelo menos, o dobro de endereços do número máximo de pods por nó.
Confira o exemplo a seguir para entender como o valor padrão de Tamanho da máscara por nó= /24 foi calculado para acomodar 110 pods:
Maximum pods per node = 110
Total number of IP addresses required = 2 * 110 = 220
Per node mask size = /24
Number of IP addresses in a /24 = 2(32 - 24) = 256
Determine a máscara CIDR de pod necessária para configurar o cluster do Kubernetes com base no número de nós necessários. Planeje futuras adições de nós ao cluster ao configurar o intervalo de CIDR:
Total number of nodes supported = 2(Per node mask size - pod CIDR mask)
Como há um Tamanho da máscara por nó padrão= /24, consulte a tabela a seguir, que mapeia a máscara CIDR do pod para o número de nós compatíveis.
| Máscara de CIDR do pod | Cálculo: 2(tamanho da máscara por nó - máscara CIDR) | Número máximo de nós compatíveis, incluindo nós do plano de controle |
|---|---|---|
| /21 | 2(24 - 21) | 8 |
| /20 | 2(24-20) | 16 |
| /19 | 2(24 - 19) | 32 |
| /18 | 2(24 - 18) | 64 |
Depois de calcular o bloco CIDR do pod para o cluster do Kubernetes, configure-o como parte do fluxo de trabalho de criação do cluster na próxima seção.
Criar um cluster compartilhado
Siga estas etapas para criar um cluster compartilhado do Kubernetes:
Console
No menu de navegação, selecione Kubernetes Engine > Clusters.
Clique em Criar cluster.
No campo Nome, especifique um nome para o cluster.
Selecione a versão do Kubernetes para o cluster.
Selecione a zona em que o cluster será criado.
Clique em Anexar projeto e selecione um projeto para anexar ao cluster. Clique em Salvar. É possível anexar ou separar projetos depois de criar o cluster na página de detalhes do projeto. É necessário ter um projeto anexado ao cluster antes de implantar cargas de trabalho de contêineres nele.

Clique em Próxima.
Configure as definições de rede do cluster. Não é possível mudar essas configurações de rede depois de criar o cluster. O protocolo de Internet padrão e único compatível com clusters do Kubernetes é a versão 4 (IPv4).
Se você quiser criar nós de balanceador de carga dedicados, insira o número de nós a serem criados. Por padrão, você recebe zero nós, e o tráfego do balanceador de carga é executado pelos nós de controle.
Selecione o CIDR de serviço (roteamento entre domínios sem classe) a ser usado. Seus serviços implantados, como balanceadores de carga, recebem endereços IP desse intervalo.
Selecione o CIDR do pod a ser usado. O cluster aloca endereços IP desse intervalo para seus pods e VMs.
Clique em Próxima.
Revise os detalhes do pool de nós padrão gerado automaticamente para o cluster. Clique em edit Editar para modificar o pool de nós padrão.
Para criar outros pools de nós, selecione Adicionar pool de nós. Ao editar o pool de nós padrão ou adicionar um novo, personalize-o com as seguintes opções:
- Atribua um nome ao pool de nós. Não é possível modificar o nome depois de criar o pool de nós.
- Especifique o número de nós de trabalho a serem criados no pool de nós.
Selecione a classe de máquina mais adequada para os requisitos da sua carga de trabalho. Confira a lista das seguintes configurações:
- Tipo de máquina
- CPU
- Memória
Clique em Salvar.
Clique em Criar para gerar o cluster.
A criação de um cluster compartilhado pode levar até 90 minutos.
API
Para criar um cluster usando a API diretamente, aplique um recurso personalizado à sua zona do GDC:
Crie um recurso personalizado
Clustere salve-o como um arquivo YAML, comocluster.yaml:apiVersion: cluster.gdc.goog/v1 kind: Cluster metadata: name: CLUSTER_NAME namespace: platform spec: clusterNetwork: podCIDRSize: POD_CIDR serviceCIDRSize: SERVICE_CIDR initialVersion: kubernetesVersion: KUBERNETES_VERSION nodePools: - machineTypeName: MACHINE_TYPE name: NODE_POOL_NAME nodeCount: NUMBER_OF_WORKER_NODES taints: TAINTS labels: LABELS acceleratorOptions: gpuPartitionScheme: GPU_PARTITION_SCHEME releaseChannel: channel: UNSPECIFIEDSubstitua:
CLUSTER_NAME: o nome do cluster. O nome do cluster não pode terminar com-system. O sufixo-systemé reservado para clusters criados pelo GDC.POD_CIDR: o tamanho dos intervalos de rede de que os endereços IP virtuais do pod são alocados. Se não for definido, um valor padrão21será usado.SERVICE_CIDR: o tamanho dos intervalos de rede de que os endereços IP virtuais de serviço são alocados. Se não for definido, um valor padrão23será usado.KUBERNETES_VERSION: a versão do Kubernetes do cluster, como1.26.5-gke.2100. Para listar as versões disponíveis do Kubernetes para configuração, consulte Listar as versões disponíveis do Kubernetes para um cluster.MACHINE_TYPE: o tipo de máquina para os nós de trabalho do pool de nós. Consulte os tipos de máquina disponíveis para saber o que pode ser configurado.NODE_POOL_NAME: o nome do pool de nós.NUMBER_OF_WORKER_NODES: o número de nós de trabalho a serem provisionados no pool de nós.TAINTS: os taints a serem aplicados aos nós deste pool de nós. Esse campo é opcional.LABELS: os rótulos a serem aplicados aos nós deste pool de nós. Ele contém uma lista de pares de chave-valor. Esse campo é opcional.GPU_PARTITION_SCHEME: o esquema de particionamento de GPU, se você estiver executando cargas de trabalho de GPU. Esse campo é opcional. Por exemplo,mixed-2. A GPU não será particionada se este campo não for definido. Para mais informações sobre os perfis de GPU com várias instâncias (MIG) disponíveis, consulte Perfis de MIG compatíveis.
Aplique o recurso personalizado à sua instância do GDC:
kubectl apply -f cluster.yaml --kubeconfig MANAGEMENT_API_SERVERSubstitua
MANAGEMENT_API_SERVERpelo caminho do kubeconfig do servidor de API zonal. Se você ainda não gerou um arquivo kubeconfig para o servidor da API na zona de destino, consulte Fazer login.
A criação de um cluster compartilhado pode levar até 90 minutos.
Terraform
Em um arquivo de configuração do Terraform, insira o seguinte snippet de código:
provider "kubernetes" { config_path = "MANAGEMENT_API_SERVER" } resource "kubernetes_manifest" "cluster-create" { manifest = { "apiVersion" = "cluster.gdc.goog/v1" "kind" = "Cluster" "metadata" = { "name" = "CLUSTER_NAME" "namespace" = "platform" } "spec" = { "clusterNetwork" = { "podCIDRSize" = "POD_CIDR" "serviceCIDRSize" = "SERVICE_CIDR" } "initialVersion" = { "kubernetesVersion" = "KUBERNETES_VERSION" } "nodePools" = [{ "machineTypeName" = "MACHINE_TYPE" "name" = "NODE_POOL_NAME" "nodeCount" = "NUMBER_OF_WORKER_NODES" "taints" = "TAINTS" "labels" = "LABELS" "acceleratorOptions" = { "gpuPartitionScheme" = "GPU_PARTITION_SCHEME" } }] "releaseChannel" = { "channel" = "UNSPECIFIED" } } } }Substitua:
MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal. Se você ainda não gerou um arquivo kubeconfig para o servidor da API na zona de destino, consulte Fazer login.CLUSTER_NAME: o nome do cluster. O nome do cluster não pode terminar com-system. O sufixo-systemé reservado para clusters criados pelo GDC.POD_CIDR: o tamanho dos intervalos de rede de que os endereços IP virtuais do pod são alocados. Se não for definido, um valor padrão21será usado.SERVICE_CIDR: o tamanho dos intervalos de rede de que os endereços IP virtuais de serviço são alocados. Se não for definido, um valor padrão23será usado.KUBERNETES_VERSION: a versão do Kubernetes do cluster, como1.26.5-gke.2100. Para listar as versões disponíveis do Kubernetes para configuração, consulte Listar as versões disponíveis do Kubernetes para um cluster.MACHINE_TYPE: o tipo de máquina para os nós de trabalho do pool de nós. Consulte os tipos de máquina disponíveis para saber o que pode ser configurado.NODE_POOL_NAME: o nome do pool de nós.NUMBER_OF_WORKER_NODES: o número de nós de trabalho a serem provisionados no pool de nós.TAINTS: os taints a serem aplicados aos nós deste pool de nós. Esse campo é opcional.LABELS: os rótulos a serem aplicados aos nós deste pool de nós. Ele contém uma lista de pares de chave-valor. Esse campo é opcional.GPU_PARTITION_SCHEME: o esquema de particionamento de GPU, se você estiver executando cargas de trabalho de GPU. Esse campo é opcional. Por exemplo,mixed-2. A GPU não será particionada se este campo não for definido. Para mais informações sobre os perfis de GPU com várias instâncias (MIG) disponíveis, consulte Perfis de MIG compatíveis.
Aplique o novo cluster compartilhado do Kubernetes usando o Terraform:
terraform apply
A criação de um cluster compartilhado pode levar até 90 minutos.
A seguir
- Implantar um app de contêiner de alta disponibilidade
- Cargas de trabalho de contêiner no GDC
- Hierarquia de recursos