Compartilhar via


Implantar um cluster do Kubernetes em uma rede virtual personalizada no Azure Stack Hub

Você pode implantar um cluster do Kubernetes usando o mecanismo do AKS (Serviço de Kubernetes do Azure) em uma rede virtual personalizada. Este artigo examina como localizar as informações necessárias em sua rede virtual. Você pode encontrar etapas para calcular os endereços IP usados pelo cluster, definir os valores no modelo de API e definir a tabela de rotas e o grupo de segurança de rede.

O cluster do Kubernetes no Azure Stack Hub usando o mecanismo do AKS usa o plug-in de rede kubenet. O mecanismo do AKS no Azure Stack Hub também dá suporte ao plug-in de rede CNI do Azure.

Restrições ao criar uma rede virtual personalizada

  • A VNET personalizada deve estar na mesma assinatura que todos os outros componentes do cluster do Kubernetes.
  • O pool de nós do painel de controle e o pool de nós do agente devem estar na mesma rede virtual. Você pode implantar seus nós em sub-redes diferentes dentro da mesma rede virtual.
  • A sub-rede do cluster do Kubernetes deve usar um intervalo de IP dentro do espaço do intervalo de IP da rede virtual personalizada, consulte Obter o bloco de endereço IP.
  • Considere que o tamanho recomendado da(s) sub-rede(s) do nó depende do tipo de plug-in de rede que está sendo usado. Como diretriz geral, a CNI do Azure requer um número maior de endereços IP para a sub-rede que dá suporte aos pools de nós do agente do que kubenet. Confira os exemplos de kubenet e CNI do Azure abaixo.
  • O 169.254.0.0/16 espaço de endereço não pode ser usado para VNETs personalizadas para clusters do Kubernetes.

Criar rede virtual personalizada

Você deve ter uma rede virtual personalizada em sua instância do Azure Stack Hub. Para obter mais informações, confira Início rápido: criar uma rede virtual usando o portal do Azure.

Crie uma nova sub-rede em sua rede virtual. Você precisará obter a ID do recurso da sub-rede e o intervalo de endereços IP. Você usará a ID do recurso e o intervalo em seu modelo de API ao implantar o cluster.

  1. Abra o portal do usuário do Azure Stack Hub em sua instância do Azure Stack Hub.

  2. Selecione Todos os recursos.

  3. Insira o nome da sua rede virtual na caixa de pesquisa.

  4. Selecione Sub-redes>+ Sub-redes para adicionar uma sub-rede.

  5. Adicione um Nome e um intervalo de endereços usando a notação CIDR. Selecione OK.

  6. Selecione Propriedades na folha Redes virtuais. Copie a ID do recurso e adicione /subnets/<nameofyoursubnect>. Você usará esse valor como seu valor para a vnetSubnetId chave no modelo de API do cluster. A ID do recurso da sub-rede usa o seguinte formato:
    /subscriptions/SUB_ID/resourceGroups/RG_NAME/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/SUBNET_NAME

    ID do recurso de rede virtual

  7. Selecione Sub-redes na folha Redes virtuais. Selecione o nome da sub-rede, por exemplo control-plane-sn.

    Não associe a sub-rede a um NSG (grupo de segurança de rede).

    bloco CIDR de rede virtual

  8. Na folha da sub-rede, anote o intervalo de endereços (Bloco CIDR) de cada sub-rede.

Considerações para selecionar um espaço de endereçamento

Ao criar uma rede virtual personalizada, você especifica o espaço de endereço IP da rede e um intervalo de endereços IP para cada sub-rede. Considere os seguintes fatores ao escolher os espaços de endereço e os intervalos a serem usados no cluster do Kubernetes:

  • Espaços de endereço sobrepostos podem resultar em conflitos de endereço IP ou erros de comunicação. Para reduzir o risco de sobreposição de endereços IP, escolha um espaço de endereço exclusivo para sua nova rede virtual.
  • Os espaços de endereço nos 10/8intervalos , 172.16/12e 192.168/16 geralmente são usados para redes privadas e podem ser usados pela infraestrutura de datacenter existente. Se seus aplicativos do Kubernetes usarem recursos em seu datacenter, reduza o risco de conflitos escolhendo um espaço de endereço para sua rede virtual personalizada que seja diferente do espaço de endereço do datacenter.
  • Recomendamos que você use uma sub-rede dedicada para o cluster do Kubernetes.
  • Se estiver usando várias redes virtuais existentes, considere usar espaços de endereçamento diferentes em cada rede se você pretende usar o emparelhamento de rede virtual. A sobreposição de espaços de endereço pode prejudicar sua capacidade de habilitar o emparelhamento.

Obter os blocos de endereços IP

O mecanismo do AKS dá suporte à implantação em uma rede virtual existente. Quando implantado em uma rede virtual existente, o cluster usa blocos de endereços consecutivos para nós de agente, nós do painel de controle, serviços de cluster e contêineres (pods). Cada bloco de endereço pode ser convertido em uma sub-rede dentro da rede virtual. Todos os blocos de endereço na implantação do cluster devem fazer parte do espaço de endereço de rede virtual geral. A escolha de blocos de endereço fora do espaço de endereço da rede virtual pode resultar em problemas de conectividade.

Um mínimo de três blocos de endereço são necessários ao configurar um cluster do Kubernetes:

  • Bloco de endereços de nós: Este é o bloco de endereços usado para atribuir endereços aos nós do cluster. Pode ser um único bloco de endereço para todos os nós de cluster ou podem ser blocos separados (sub-redes) para o plano de controle e pools de agentes. Leve em consideração a contagem de nós em seu cluster ao selecionar o intervalo de endereços para esse bloco. Para nós e contêineres da CNI do Azure, obtenha seus endereços do mesmo bloco de endereços, portanto, leve em consideração o número de contêineres que você deseja implantar no cluster ao escolher o intervalo de endereços ao usar a CNI do Azure.
  • Bloco de endereços de serviços: esse é o bloco de endereços do qual os serviços implantados no cluster do Kubernetes obterão seu endereço de cluster. Leve em consideração o número máximo de serviços que você pretende executar em seu cluster ao selecionar o intervalo de endereços para esse bloco.
  • Bloco de endereços do cluster: Este é o bloco de endereços do qual os pods obterão seu endereço de cluster. Leve em consideração o número máximo de pods que você pretende executar em seu cluster ao selecionar o intervalo de endereços para esse bloco. Como mencionado anteriormente, para a CNI do Azure, os blocos de endereço de cluster e nós são os mesmos.

Além dos blocos de endereço, para nós do plano de controle, você precisará definir mais dois valores. Você precisará saber o número de endereços IP que precisará reservar para o cluster e o primeiro IP estático consecutivo dentro do espaço IP da sub-rede. O mecanismo do AKS requer um intervalo de até 16 endereços IP não utilizados quando você usa vários nós do painel de controle. O cluster usará um endereço IP para cada plano de controle até cinco nós do plano de controle. O mecanismo do AKS também exigirá os próximos 10 endereços IP após o último nó do painel de controle para reserva de endereço IP de headroom. Por fim, outro endereço IP será usado pelo balanceador de carga após os nós do plano de controle e a reserva de headroom, para um total de 16. Ao colocar seu bloco de endereços IP, a sub-rede requer as seguintes alocações dos endereços IP existentes:

  • Os primeiros quatro endereços IP e o último endereço IP são reservados e não podem ser usados em nenhuma sub-rede do Azure.
  • Um buffer de 16 endereços IP deve ser deixado aberto.
  • O valor do primeiro endereço IP do cluster deve estar no final do espaço de endereço para evitar conflitos de IP. Se possível, atribua a firstConsecutiveStaticIP propriedade a um endereço IP próximo ao final do espaço de endereço IP disponível na sub-rede.

Por exemplo, para um cluster com três nós do plano de controle. Se você estiver usando uma sub-rede com 256 endereços, por exemplo, 10.100.0.0/24, precisará definir seu primeiro endereço IP estático consecutivo antes de 239. A tabela a seguir mostra os endereços e as considerações:

Intervalo para sub-rede /24 Número Observação
172.100.0.0 - 172.100.0.3 4 Reservado na sub-rede do Azure.
172.100.0.224-172.100.0.238 14 Contagem de endereços IP para um cluster definido pelo mecanismo do AKS.

3 endereços IP para 3 nós do plano de controle
10 endereços IP para headroom
1 endereço IP para o balanceador de carga
172.100.0.238 - 172.100.0.254 16 16 Buffer de endereço IP.
172.100.0.255 1 Reservado na sub-rede do Azure.

Neste exemplo, então firstConsecutiveStaticIP a propriedade seria 172.100.0.224.

Para sub-redes maiores, por exemplo, /16 com mais de 60 mil endereços, talvez não seja prático definir suas atribuições de IP estático para o final do espaço de rede. Defina o intervalo de endereços IP estáticos do cluster longe dos primeiros 24 endereços no espaço IP para que o cluster possa ser resiliente ao reivindicar endereços.

Exemplo de blocos de endereço Kubenet

No exemplo a seguir, você pode ver como essas várias considerações preenchem o espaço de endereço na rede virtual para um cluster usando o plug-in de rede kubenet com sub-redes dedicadas para o nó do painel de controle e pools de nós do agente com três nós por pool.

Espaço de endereço VNET: 10.100.0.0/16.

Bloco de endereço (sub-rede) CIDR Intervalo de IP Contagem de IP (disponível)
Bloco de nós do plano de controle 10.100.0.0/24 10.100.0.0 - 10.100.0.255 255 - 4 reservados = 251
Bloco de nós do agente 10.100.1.0/24 10.100.1.0 - 10.100.1.255 255 - 4 reservados = 251
Bloqueio de serviços 10.100.16.0/20 10.100.16.0 - 10.100.31.255 4.096 - 5 reservados = 4.091
Bloco de cluster 10.100.128.0/17 10.100.128.0 - 10.100.255.255 32.768 - 5 reservados = 32.763

Neste exemplo, a firstConsecutiveStaticIP propriedade seria 10.100.0.239.

Exemplo de blocos de endereço CNI do Azure

No exemplo a seguir, você pode ver como essas várias considerações preenchem o espaço de endereço na rede virtual para um cluster usando o plug-in de rede CNI do Azure com sub-redes dedicadas para o painel de controle e pools de nós do agente com três nós por pool.

Espaço de endereço VNET: 172.24.0.0/16.

Observação

Em seu ambiente, se o intervalo de IP público estiver dentro de CIDR10.0.0.0/8, use kubenet como o plug-in de rede.

Bloco de endereço (sub-rede) CIDR Intervalo de IP Contagem de IP (disponível)
Bloco de nós do plano de controle 172.24.0.0/24 172.24.0.0 - 172.24.0.255 255 - 4 reservados = 251
Nós do agente e bloco de cluster 172.24.128.0/17 172.24.128.0 - 172.24.255.255 32.768 - 5 reservados = 32.763
Bloqueio de serviços 172.24.16.0/20 172.24.16.0 - 172.24.31.255 4.096 - 5 reservados = 4.091

Neste exemplo, a firstConsecutiveStaticIP propriedade seria 172.24.0.239.

Atualizar o modelo de API

Atualize o modelo de API usado para implantar o cluster do mecanismo do AKS em sua rede virtual personalizada.

Em masterProfile, defina os seguintes valores:

Campo Exemplo Descrição
vnetSubnetId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn Especifique a ID do caminho do Azure Resource Manager na sub-rede. Esse valor é mapeado para o bloco de endereços dos nós do plano de controle acima.
firstConsecutiveStaticIP 10.100.0.239 Atribua à firstConsecutiveStaticIP propriedade de configuração um endereço IP próximo ao final do espaço de endereço IP disponível na sub-rede desejada. firstConsecutiveStaticIP Aplica-se somente ao pool de nós do plano de controle.

Em agentPoolProfiles , defina os seguintes valores:

Campo Exemplo Descrição
vnetSubnetId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/agents-sn Especifique a ID do caminho do Azure Resource Manager na sub-rede. Esse valor é mapeado para o bloco de endereços de nós do agente acima.

Em orchestratorProfile, localize kubernetesConfig e defina o seguinte valor:

Campo Exemplo Descrição
clusterSubnet 10.100.128.0/17 A sub-rede IP usada para alocar endereços IP para interfaces de rede de pod. Esse valor é mapeado para o bloco de endereços do cluster acima. A sub-rede deve estar no espaço de endereço VNET. Com a CNI do Azure habilitada, o valor padrão é 10.240.0.0/12. Sem a CNI do Azure, o valor padrão é 10.244.0.0/16. Use /16 em vez de /24 sub-rede. Se você usar /24, essa sub-rede será atribuída a apenas um nó. Outro nó não receberá a rede POD atribuída, pois você terá ficado sem espaço IP, portanto, eles não estarão prontos no cluster.
serviçoCidr 10.100.16.0/20 A sub-rede IP usada para alocar endereços IP para serviços implantados no cluster. Esse valor é mapeado para o bloco de serviços de cluster acima.
dnsServiceIP 10.100.16.10 O endereço IP a ser atribuído ao serviço DNS do cluster. O endereço deve vir da sub-rede serviceCidr. Esse valor deve ser definido ao especificar o serviceCidr. O valor padrão é o endereço .10 da sub-rede serviceCidr.

Por exemplo, se estiver usando kubenet:
Com um espaço de endereçamento de rede de 10.100.0.0/16 onde a sub-rede para control-plane-sn is 10.100.0.0/24 e agents-sn is 10.100.1.0/24

"masterProfile": {
  ...
  "vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn",
  "firstConsecutiveStaticIP": "10.100.0.239",
  ...
},
...
"agentPoolProfiles": [
  {
    ...
    "vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/agents-sn",
    ...
  },
    ...
"kubernetesConfig": [
  {
    ...
    "clusterSubnet": "10.100.128.0/17",
    "serviceCidr": "10.100.16.0/20",
    "dnsServiceIP" : "10.100.16.10",

    ...
  },

Por exemplo, se estiver usando a CNI do Azure:
Com um espaço de endereçamento de rede de 172.24.0.0/16 onde a sub-rede para control-plane-sn is 172.24.0.0/24 e k8s-sn is 172.24.128.0/17

"masterProfile": {
  ...
  "vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn",
  "firstConsecutiveStaticIP": "172.24.0.239",
  ...
},
...
"agentPoolProfiles": [
  {
    ...
    "vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/k8s-sn",
    ...
  },
    ...
"kubernetesConfig": [
  {
    ...
    "clusterSubnet": "172.24.128.0/17",
    "serviceCidr": "172.24.16.0/20",
    "dnsServiceIP" : "172.24.16.10",
    ...
  },

Implantar seu cluster

Depois de adicionar os valores ao modelo de API, você pode implantar o cluster do computador cliente usando o deploy comando no mecanismo do AKS. Para obter instruções, consulte Implantar um cluster do Kubernetes.

Definir a tabela de rotas

Se você estiver usando kubenet, por exemplo, networkPlugin: kubenet no objeto de configuração do kubernetesConfig modelo de API. Depois de implantar o cluster, retorne à rede virtual no portal do usuário do Azure Stack. Defina a tabela de rotas e o NSG (grupo de segurança de rede) na folha da sub-rede. Depois de implantar com êxito um cluster em sua rede virtual personalizada, obtenha a ID do recurso Tabela de Rotas da folha Rede no grupo de recursos do cluster.

  1. Abra o portal do usuário do Azure Stack Hub em sua instância do Azure Stack Hub.

  2. Selecione Todos os recursos.

  3. Insira o nome da sua rede virtual na caixa de pesquisa.

  4. Selecione Sub-redes e, em seguida, selecione o nome da sub-rede que contém o cluster.

    Tabela de rotas e grupo de segurança de rede

  5. Selecione Tabela de rotas e, em seguida, selecione a tabela de rotas para o cluster.

  6. Certifique-se de que isso seja feito para cada sub-rede especificada no modelo de API, incluindo a masterProfile sub-rede.

Observação

A rede virtual personalizada para o cluster do Windows do Kubernetes tem um problema conhecido.

Próximas etapas