Aliases de IP

Nesta página, descrevemos como configurar aliases de IP no Kubernetes Engine.

Com os aliases de IP, os clusters do Kubernetes Engine podem alocar os endereços IP de pod de um bloco CIDR conhecido para o Google Cloud Platform. Isso permite que o cluster interaja com outros produtos e entidades do Cloud Platform e também permite clusters mais escaláveis.

O uso de aliases de IP tem várias vantagens:

  • IPs de pod são reservados na rede antes do tempo, o que evita o conflito com outros recursos de computação.
  • A camada de rede pode realizar verificações antispoofing para garantir que o tráfego de saída não seja enviado com IPs de origem arbitrários.
  • Os IPs de pod são roteáveis nativamente dentro da rede do Google Cloud Platform (inclusive via peering de redes VPC), de modo que os clusters podem escalar para tamanhos maiores rapidamente sem usar a cota da rota.
  • Os IPs com aliases podem ser anunciados por meio do BGP pelo roteador da nuvem, permitindo um suporte melhor para a conexão a redes locais.
  • Os controles de firewall para pods podem ser aplicados separadamente do node de hospedagem.
  • Os aliases de IP permitem que os pods acessem diretamente os serviços hospedados sem usar um gateway NAT.

Na versão 1.7.5 ou posterior do Kubernetes, a ativação de aliases de IP evita que o Kubernetes Engine adicione rotas por node para representar IPs de pod no seu cluster.

Como criar um novo cluster com aliases de IP

As seções a seguir explicam como criar um novo cluster com aliases de IP. O Kubernetes Engine pode criar uma sub-rede automaticamente ou você pode criar uma sub-rede de modo manual.

Como criar uma sub-rede automaticamente

Console

  1. Acesse o menu "Kubernetes Engine" no console do Google Cloud Platform.

    Acessar o menu "Kubernetes Engine"

  2. Clique em Criar cluster.

  3. Configure seu cluster conforme quiser. Depois, no menu suspenso Usar intervalos de IP do alias, selecione Ativado. Vários menus são exibidos.
  4. Com o menu suspenso Criar sub-rede automaticamente definido como Ativado, configure Intervalo de endereços do node, Intervalo de endereços do contêiner e Intervalo de endereços do serviço conforme desejado.
  5. Clique em Criar.

gcloud

Para criar um cluster novo que use aliases de IP, execute o comando a seguir:

gcloud beta container clusters create --enable-ip-alias --create-subnetwork name=my-cluster-subnet

Neste comando, o cluster novo é configurado automaticamente com intervalos de IP e uma sub-rede. Você pode fornecer um nome para a sub-rede (neste exemplo, name=my-cluster-subnet) ou fornecer uma string vazia ("") para que o nome seja gerado automaticamente.

Para você mesmo configurar o cluster, execute o comando a seguir:

gcloud beta container clusters create [CLUSTER-NAME] --enable-ip-alias --create-subnetwork="" [--cluster-ipv4-cidr=[RANGE]] [--service-ipv4-cidr=[RANGE]]

Veja a função de cada elemento nesse comando:

  • [CLUSTER-NAME] é o nome que você escolheu para o cluster.
  • --enable-ip-alias indica que o cluster usa aliases de IP.
  • A sinalização --create-subnetwork faz com que uma sub-rede seja criada automaticamente para o cluster.
  • A sinalização --cluster-ipv4-cidr opcional indica o tamanho e a localização do intervalo CIDR do cluster. [RANGE] pode estar na forma de [IP]/[SIZE], como 10.0.0.0/18, ou simplesmente /[SIZE], o que faz com que o endereço IP seja atribuído automaticamente. Se esse sinalizador for omitido, um intervalo CIDR será atribuído automaticamente com tamanhos padrão.
  • A sinalização --service-ipv4-cidr opcional indica o tamanho e a localização do intervalo CIDR do serviço. As especificações de [RANGE] são idênticas às de --cluster-ipv4-cidr. O intervalo não pode sobrepor-se com --cluster-ip4-cidr e vice-versa. Se esse sinalizador for omitido, um intervalo CIDR será atribuído automaticamente com tamanhos padrão.

Como usar uma sub-rede existente com aliases de IP

Você pode criar manualmente uma sub-rede do Compute Engine com um intervalo primário e dois intervalos secundários para seu cluster do Kubernetes Engine e usar a sub-rede em conjunto com aliases de IP do Kubernetes Engine. Quando você cria um novo cluster com aliases de IP, pode especificar que ele precisa usar a sub-rede existente do Compute Engine. Os endereços IP dessa sub-rede serão alocados da seguinte maneira:

  • Os IPs de nodes são alocados do intervalo primário.
  • Os IPs de pod são atribuídos de um intervalo secundário especificado durante a criação do cluster.
  • Os IPs de serviço são alocados de outro intervalo secundário especificado durante a criação do cluster.

Console

É preciso criar uma sub-rede com pelo menos dois intervalos CIDR secundários para endereços de pod e serviço.

Para criar uma sub-rede, realize estas etapas:

  1. Acesse o menu Rede VPC do Cloud Platform Console.
  2. Selecione a rede que você quer usar com o Kubernetes Engine.
  3. Clique em Adicionar sub-rede.
  4. Preencha o campo Nome com um nome para a sub-rede.
  5. No menu suspenso Região, selecione a região preferida.
  6. Preencha Intervalo de endereço IP com o intervalo preferido para VMs e IPs de balanceador de carga interno, como 10.4.0.0/22.
  7. Para criar o primeiro intervalo secundário, clique em Criar intervalo IP secundário.
  8. Preencha o campo Nome do intervalo da sub-rede com o nome do intervalo secundário e, em seguida, preencha o campo Intervalo de IP secundário com um intervalo CIDR para os pods do cluster, como 10.0.0.0/14.
  9. Para adicionar o segundo intervalo secundário, clique em Adicionar intervalo de IP.
  10. Preencha o campo Nome do intervalo da sub-rede com o nome do intervalo secundário e, em seguida, preencha o campo Intervalo de IP secundário com um intervalo CIDR para os pods dos serviços, como 10.4.4.0/22.
  11. Clique em Adicionar.

Para criar um cluster:

  1. Acesse o menu "Kubernetes Engine" no console do Google Cloud Platform.

    Acessar o menu "Kubernetes Engine"

  2. Clique em Criar cluster.

  3. Configure seu cluster conforme quiser. Depois, no menu suspenso Usar intervalos de IP do alias, selecione Ativado. Vários menus são exibidos.
  4. No menu suspenso Criar sub-rede automaticamente, selecione Desativado.
  5. No menu suspenso Rede, selecione a rede desejada.
  6. Nos menus suspensos Sub-rede de node, Sub-rede de contêiner e Sub-rede de serviços, selecione as sub-redes desejadas.
  7. Clique em Criar.

gcloud

Para criar sub-redes personalizadas, execute o comando a seguir, em que [SUBNET-NAME] é o nome que você escolhe para a sub-rede:

gcloud beta compute networks subnets create [SUBNET-NAME] --range 10.4.0.0/22 --secondary-range my-pods=10.0.0.0/14 --secondary-range my-services=10.4.4.0/22

O comando de exemplo acima cria um intervalo primário para nodes e dois intervalos secundários: um para pods, chamado my-pods, e outro para serviços, chamado my-services.

Para criar o cluster com as sub-redes, execute o comando a seguir, em que [CLUSTER-NAME] é o nome que você escolhe para o cluster:

gcloud beta container clusters create [CLUSTER-NAME] --enable-ip-alias --subnetwork=[SUBNET-NAME] --cluster-secondary-range-name=my-pods --services-secondary-range-name=my-services

Considerações para dimensionamento de clusters

Veja abaixo várias considerações para dimensionamento de aliases de IP, organizadas por tipo de recurso.

Para saber mais sobre os intervalos CIDR utilizáveis do Google Cloud Platform, consulte Visão geral da rede Virtual Private Cloud (VPC) na documentação do Compute Engine.

IP de node

Os IPs de node e os balanceadores de carga internos são alocados do intervalo primário especificado em uma sub-rede. O Kubernetes Engine exige um comprimento de prefixo CIDR entre 19 e 28 bits, o que corresponde a entre 16 (=2^(32-28)=2^4) e 8.192 (=2^(32-19)=2^13) endereços.

Quando você criar o cluster, escolha um intervalo de sub-rede grande o bastante para o crescimento previsto do cluster.

Por exemplo, para criar um cluster com até 60 nodes ou balanceadores de carga internos, você precisa alocar um bloco contíguo de 64 endereços (=2^6). Em termos de comprimento de prefixo CIDR, isso corresponde a uma rede /26 (=32-6).

IP de pod

Cada node exige que 256 endereços IP, ou um bloco /24, sejam reservados para uso por pods em execução ali. Assim como acontece com o intervalo de IP de node, este intervalo não pode ser alterado após a criação do cluster. Portanto, é importante dimensionar o bloco de IP de pods para acomodar o número de nodes multiplicado por 256. O Kubernetes Engine exige que o intervalo de prefixo secundário para pods tenha entre 11 e 19 bits, o que corresponde a um bloco contíguo com entre 8.192 e 2.097.152 endereços.

Com base no exemplo acima, um cluster com 60 nodes precisa que um bloco de 64 x 256 = 16.384 endereços IP contíguos seja alocado para pods. Isso equivaleria a reservar 6 + 8 = 14 bits para endereços, o que corresponde a uma rede '/18' (=32-14).

IP de serviço

O intervalo IP de serviço é imutável após a criação do cluster. Portanto, é importante que você dimensione o bloco CIDR do serviço para acomodar o número máximo de objetos de serviço que você pretende implantar. O Kubernetes Engine exige que o intervalo de prefixo secundário para IPs de serviço tenha entre 18 e 22 bits, o que corresponde a um bloco contíguo com entre 1.024 e 16.384 endereços.

Por padrão, o Kubernetes Engine usa uma rede /20, que permite até 4.092 (=2^(32-20) - 4 = 2^12 - 4 = 4.096 - 4) serviços no cluster.

Restrições

  • Sub-redes adicionais não podem ser usadas em conjunto com aliases de IP.
  • Atualmente, não é possível migrar um cluster existente para um cluster que use aliases de IP. Essa limitação será removida em versões futuras.
  • Os IPs de cluster para serviços internos só estão disponíveis dentro do cluster. Se você quiser acessar um serviço do Kubernetes dentro da VPC, mas de fora do cluster (ou seja, de uma instância do Compute Engine), use um balanceador de carga interno.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…