Partilhar via


Configurar o balanceador de carga do serviço no serviço Nexus Kubernetes do Operador do Azure

Neste artigo, você aprenderá a configurar um balanceador de carga de serviço em um cluster Nexus Kubernetes. O balanceador de carga permite que serviços externos acessem os serviços em execução no cluster. O foco deste guia está nos aspetos de configuração, fornecendo exemplos para ajudá-lo a entender o processo. Seguindo este guia, você pode configurar efetivamente os balanceadores de carga de serviço em seu cluster Nexus Kubernetes.

Pré-requisitos

Antes de prosseguir com este guia de instruções, é recomendável que você:

  • Consulte o guia de início rápido do cluster Nexus Kubernetes para obter uma visão geral abrangente e as etapas envolvidas.
  • Certifique-se de atender aos pré-requisitos descritos para garantir a implementação suave do guia.
  • Conhecimento dos conceitos do Kubernetes, incluindo implantações e serviços.
  • Entre em contato com o administrador da rede para adquirir um intervalo de endereços IP que possa ser usado para o pool de IP do balanceador de carga.

Limitações

  • A configuração do pool de IP é imutável: uma vez definida, ela não pode ser modificada em um cluster Nexus Kubernetes.
  • Os nomes do pool de IP devem começar com uma letra minúscula ou um dígito e terminar com uma letra ou dígito minúsculo.
  • Os nomes de pool de IP não devem exceder 63 caracteres para evitar possíveis problemas ou restrições.
  • Os pools de endereços IP não devem se sobrepor ao prefixo POD CIDR, Service CIDR ou CNI existente para evitar conflitos e problemas de rede dentro do cluster.

Importante

Estas instruções são para criar um novo cluster Nexus Kubernetes. Evite aplicar o modelo Bicep a um cluster existente, pois a configuração do pool de IP é imutável. Depois que um cluster é criado com a configuração do pool de IP, ele não pode ser modificado.

Opções de configuração

Antes de configurar o pool de endereços IP para o balanceador de carga de serviço, é importante entender as várias opções de configuração disponíveis. Essas opções permitem que você defina o comportamento e os parâmetros do pool de endereços IP de acordo com suas necessidades específicas.

Vamos explorar as opções de configuração para o pool de endereços IP.

Parâmetros obrigatórios

A configuração do pool de endereços IP requer a presença de dois campos: addresses e name. Esses campos são essenciais para definir o intervalo de endereços IP e identificar o pool.

  • O addresses campo especifica a lista de intervalos de endereços IP que podem ser usados para alocação dentro do pool. Você pode definir cada intervalo como uma sub-rede no formato CIDR. Evite usar um único endereço IP, como /32 para IPv4 e /128 para IPv6.
  • O name campo serve como um identificador exclusivo para o pool de endereços IP. Ele ajuda a associar o pool a um anúncio BGP (Border Gateway Protocol), permitindo uma comunicação eficaz dentro do cluster.

Nota

Para permitir que o serviço Kubernetes LoadBalancer tenha um endereço de pilha dupla, verifique se a configuração do pool de IP inclui CIDR IPv4 e IPv6.

Parâmetros opcionais

Além dos campos obrigatórios, também há campos opcionais disponíveis para personalização adicional da configuração do pool de endereços IP.

  • O autoAssign campo determina se os endereços IP são atribuídos automaticamente a partir do pool. Este campo é um tipo com um string valor padrão de True. Você pode defini-lo como um ou True False com base em sua preferência.
  • O onlyUseHostIps campo controla o uso de endereços IP que terminam com .0 e .255 dentro do pool. A ativação desta opção restringe a utilização a endereços IP entre .1 e (inclusive), excluindo a rede reservada e .254 os endereços de difusão.

Parâmetros do modelo Bicep para configuração do pool de endereços IP

O trecho JSON a seguir mostra os parâmetros necessários para configurar o pool de endereços IP no modelo Bicep.

"ipAddressPools": {
  "value": [
    {
      "addresses": ["<IP>/<CIDR>"],
      "name": "<pool-name>",
      "autoAssign": "True",  /* "True"/"False" */
      "onlyUseHostIps": "True"  /* "True"/"False" */
    }
  ]
}

Para adicionar a configuração do pool de IP ao cluster, você precisa atualizar o arquivo criado durante o kubernetes-deploy-parameters.json início rápido. Inclua a configuração do pool de IP neste arquivo de acordo com as configurações desejadas.

Depois de adicionar a configuração do pool de IP ao seu arquivo de parâmetros, você pode continuar com a implantação do modelo Bicep. Essa ação configura seu novo cluster com a configuração do pool de endereços IP especificada, permitindo que você utilize o pool de IP conforme pretendido.

Seguindo estas instruções, você pode criar um novo cluster Nexus Kubernetes com a configuração de pool de IP desejada e aproveitar o pool de endereços IP para seus serviços de cluster.

Parâmetros de exemplo

Este arquivo de parâmetro destina-se a ser usado com o modelo Bicep do guia QuickStart para criar um cluster com o balanceador de carga BGP habilitado. Ele contém as definições de configuração necessárias para configurar o cluster com a funcionalidade de balanceador de carga BGP. Usando esse arquivo de parâmetro com o modelo Bicep, você pode criar um cluster com os recursos desejados do balanceador de carga BGP.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "kubernetesClusterName":{
      "value": "lb-test-cluster"
    },
    "adminGroupObjectIds": {
      "value": [
        "00000000-0000-0000-0000-000000000000"
      ]
    },
    "cniNetworkId": {
      "value": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
    },
    "cloudServicesNetworkId": {
      "value": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
    },
    "extendedLocation": {
      "value": "/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
    },
    "location": {
      "value": "eastus"
    },
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa AAAAB..."
        },
        {
          "keyData": "ssh-rsa AAAAC..."
        }
      ]
    },
    "ipAddressPools": {
      "value": [
        {
          "addresses": ["<IP>/<CIDR>"],
          "name": "<pool-name>",
          "autoAssign": "True",
          "onlyUseHostIps": "True"
        }
      ]
    }
  }
}

Nota

Se você pretende criar um serviço DualStack, verifique se o pool de endereços contém um CIDR IPv4 e um CIDR IPv6. Isso permite o suporte simultâneo de endereços IPv4 e IPv6 na configuração do balanceador de carga.

Exemplo: Alocação de endereço IP estático para um serviço

Para alocar um endereço IP estático para um serviço, você pode usar os seguintes comandos.

Criar uma implantação

kubectl create deployment nginx --image=nginx --port 80

Alocação de IP estático (LoadBalancerIP)

kubectl expose deployment nginx \
    --name nginx-loadbalancer-pool1-static \
    --type LoadBalancer \
    --load-balancer-ip <IP from pool-1>

Substitua <IP from pool-1> pelo endereço IP desejado do pool de IP.

Alocação de IP estático (ExternalIP)

kubectl expose deployment nginx \
    --name nginx-clusterip-pool1-static \
    --type ClusterIP \
    --external-ip <IP from pool-1>

Substitua <IP from pool-1> pelo endereço IP desejado do pool de IP.

Exemplo: alocação de endereços IP para um serviço a partir de um pool de IP específico

Para alocar um endereço IP para um serviço de um pool de IP específico, você pode usar o seguinte comando.

kubectl expose deployment nginx \
    --name nginx-loadbalancer-pool2-auto \
    --type LoadBalancer \
    --overrides '{"metadata":{"annotations":{"metallb.universe.tf/address-pool":"pool-2"}}}'

Este comando atribui um endereço IP ao serviço a partir do pool pool-2de IP. Ajuste o nome do pool conforme necessário. Antes de experimentar esses exemplos, verifique se você já criou um cluster Nexus Kubernetes com dois pools de endereços IP diferentes. Se você não tiver feito isso, siga as etapas necessárias para criar o cluster e configurar os pools de IP de acordo.

Nota

O nome do pool de endereços IP diferencia maiúsculas de minúsculas. Certifique-se de usar o caso correto ao especificar o nome do pool.

Próximos passos

Você pode tentar implantar uma função de rede (NF) em seu cluster Nexus Kubernetes utilizando o balanceador de carga recém-configurado. Essa configuração permite testar os recursos de balanceamento de carga e observar como o tráfego é distribuído entre as instâncias da sua NF.