Como criar um cluster baseado em rotas

Nesta página, mostramos como criar um cluster no Google Kubernetes Engine, com base em rotas.

Visão geral

No Google Kubernetes Engine, os clusters podem ser diferenciados de acordo com a forma como encaminham o tráfego de um pod para outro. Um cluster que usa as rotas do Google Cloud Platform é chamado de cluster baseado em rotas. Um cluster que usa IPs de alias é chamado de cluster nativo de VPC.

VPC-nativo é o tipo recomendado e é o padrão para novos clusters. Para criar um cluster baseado em rotas, desative explicitamente a opção VPC-native.

Antes de começar

Execute as etapas a seguir para se preparar para a tarefa:

  • Verifique se você ativou a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Verifique se o SDK do Cloud está instalado.
  • Defina o ID do projeto padrão:
    gcloud config set project [PROJECT_ID]
  • Se você estiver trabalhando com clusters zonais, defina a zona padrão do Compute:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Se você estiver trabalhando com clusters regionais, defina a região padrão do Compute:
    gcloud config set compute/region [COMPUTE_REGION]
  • Atualize gcloud para a versão mais recente:
    gcloud components update

Como criar um cluster baseado em rotas

gcloud

Para criar um cluster baseado em rotas, inclua a sinalização --no-enable-ip-alias no comando de criação do cluster:

gcloud container clusters create [CLUSTER_NAME] --no-enable-ip-alias

em que [CLUSTER_NAME] é o nome que você escolhe para o cluster.

Console

  1. Acesse o menu do Google Kubernetes Engine no Console do GCP.

    Acessar o menu do Google Kubernetes Engine

  2. Clique em Criar cluster.

  3. Digite um nome para seu cluster.

  4. Clique em Opções avançadas.

  5. Em Nativo de VPC, desmarque Ativar nativo de VPC (usando o IP do alias).

  6. Clique em Criar.

Como verificar se o cluster usa rotas

gcloud

Liste os nós do cluster:

kubectl get nodes

A saída mostra os nomes dos nós:

NAME                                 STATUS   ...     AGE    VERSION
gke-xxx-default-pool-83e239a7-kcg8   Ready    ...     42m    v1.9.7-gke.6
gke-xxx-default-pool-83e239a7-qm6b   Ready    ...     42m    v1.9.7-gke.6
gke-xxx-default-pool-83e239a7-wnrq   Ready    ...     42m    1.9.7-gke.6

Liste suas rotas:

gcloud compute routes list

Na saída, na coluna NEXT_HOP, procure o nome de um dos nós do cluster:

NAME                 NETWORK        DEST_RANGE         NEXT_HOP
...
[ROUTE_NAME]         default        10.24.0.0/24       [YOUR_NODE_NAME]
...

Na saída, veja que a rota fornece um próximo salto para qualquer pacote destinado a um determinado intervalo de endereços de pods.

Console

  1. Acesse o menu do Google Kubernetes Engine no Console do GCP.

    Acessar o menu do Google Kubernetes Engine

  2. Clique no nome do cluster para abrir uma página com detalhes do cluster.

  3. Em Pool de nós, localize Grupos de instâncias e clique no nome do grupo de instâncias. A página Grupos de instâncias é aberta e exibe uma lista de nós do cluster. Tome nota desses nomes.

  4. Visite a página "Rotas" no Console do GCP.

    Visitar a página Rotas

  5. Na lista de rotas, na coluna Próximo salto, procure o nome de um dos nós do cluster. Clique no nome da rota nessa linha.

  6. A página Detalhes da rota é aberta e você verá que a rota fornece um próximo salto para qualquer pacote destinado a um determinado intervalo de endereços de pods.

Pods por nó

Em um cluster com base em rotas, cada nó recebe um intervalo /24 de endereços IP para pods. Com um intervalo /24, existem 256 endereços, mas o número máximo de pods por nó é 110. Tendo aproximadamente o dobro de endereços IP disponíveis quanto possível, o Kubernetes é capaz de mitigar a reutilização de endereços IP à medida que os pods são adicionados e removidos dos nós.

Intervalo de endereços do pod

Um cluster com base em rotas tem um intervalo de endereços IP que são usados para pods e serviços. Mesmo que o intervalo seja usado tanto para pods quanto para serviços, ele é chamado de intervalo de endereço de pod. O último /20 do intervalo de endereços de pods é usado para serviços. Um intervalo /20 tem 212 = 4096 endereços. Portanto, 4096 endereços são usados para serviços e o restante do intervalo é usado para pods.

Na saída do comando, o intervalo de endereços do pod é chamado de clusterIpv4Cidr, e o intervalo de endereços usado para os Serviços é chamado de servicesIpv4Cidr. Por exemplo, a saída de gcloud container clusters describe inclui um resultado semelhante a este:

clusterIpv4Cidr: 10.96.0.0/16
...
servicesIpv4Cidr: 10.96.240.0/20

Para a versão 1.7 do GKE e posteriores, o intervalo de endereços de pods pode ser de qualquer bloco RFC 1918: 10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16. Para versões anteriores, o intervalo de endereços de pods precisa ser de 10.0.0.0/8.

É possível personalizar o intervalo de endereços de pods especificando um intervalo CIDR. Por exemplo, é possível especificar o intervalo 10.96.0.0/16.

gcloud

gcloud container clusters create [CLUSTER_NAME] --no-enable-ip-alias \
    --cluster-ipv4-cidr 10.96.0.0/16

em que [CLUSTER_NAME] é o nome que você escolhe para o cluster.

Console

  1. Acesse o menu do Google Kubernetes Engine no Console do GCP.

    Acessar o menu do Google Kubernetes Engine

  2. Clique em Criar cluster.

  3. Digite um nome para seu cluster.

  4. Clique em Opções avançadas.

  5. Para o intervalo de endereços de pods, insira 10.96.0.0/16.

  6. Clique em Criar.

Observações para escalonamento de clusters

O número máximo de nós, pods e serviços para um determinado cluster GKE é determinado pelo tamanho da sub-rede do cluster e pelo tamanho do intervalo de endereços de pods. Não é possível alterar o tamanho do intervalo de endereços de pods depois de criar um cluster. Ao criar um cluster, escolha um intervalo de endereço de pods suficientemente grande, de forma que acomode o crescimento previsto do cluster.

A tabela a seguir mostra como escolher intervalos de endereços que são suficientes para um cluster com 900 nós:

Intervalo Orientação
Nós

Endereços IP de nós são recebidos do intervalo principal da sub-rede do cluster. Sua sub-rede de cluster precisa ser grande o suficiente para armazenar o número total de nós no cluster.

Por exemplo, se você planeja criar um cluster de 900 nós, a sub-rede do cluster precisa ter pelo menos um tamanho de /22. Um intervalo /22 tem 210 = 1024 endereços. Subtraia os 4 endereços IP reservados e você terá 1020, o que é suficiente para os 900 nós.

Intervalo de endereços do pod

Cada nó tem um intervalo /24 de endereços IP para pods. Um intervalo /24 tem 28 = 256 endereços. Lembre-se de que 4096 endereços no intervalo de endereços de pods são usados para serviços. A parte restante do intervalo de endereços de pods é usada para pods e deve ser grande o suficiente para armazenar o número de nós x 256 endereços.

Suponha que você planeje criar um cluster de 900 nós. Então você precisa de 900 x 256 = 230.400 endereços para pods. Agora, suponha que você tenha um intervalo de endereços de pods /14. Um intervalo /14 tem 218 = 262.144 endereços. Subtraia os 4096 endereços usados para serviços e você terá 258.048, o que é suficiente para 900 nós.

Padrões e limites de tamanhos de intervalos

Na tabela a seguir, veja os tamanhos mínimo, máximo e padrão para a sub-rede do cluster e para o intervalo de endereços de pods.

Intervalo Tamanho padrão Tamanho mínimo Tamanho máximo
Nós

/20, que tem 212 = 4.096 endereços. Subtraia 4 endereços reservados e você terá 4092 endereços para nós.

/29, que tem 23 = 8 endereços. Subtraia 4 endereços reservados e você terá 4 endereços para nós.

/7, que tem 225 endereços. Isso representa aproximadamente 33 milhões de endereços para nós.

Intervalo de endereços do pod

/14, que tem 218 = 262.144 endereços.

/19, que tem 213 = 8192 endereços.

/9, que tem 223 = 8.388.608 endereços.

Restrições

  • Não é possível migrar um cluster nativo de VPC para um cluster com base em rotas.
  • Não é possível migrar um cluster com base em rotas para um cluster nativo de VPC.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Kubernetes Engine