Configurar o balanceador de carga de 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 do 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 aspectos 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 do 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 do 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 minúscula ou dígito.
- Os nomes do 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 CIDR POD, CIDR de Serviço ou CNI existente para evitar conflitos e problemas de rede no 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 definir o comportamento e os parâmetros do pool de endereços IP de acordo com seus requisitos específicos.
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.
Observação
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. Esse campo é um tipo com umstring
valor padrão deTrue
. Você pode defini-lo como umTrue
ouFalse
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. Habilitar essa opção restringe o uso a endereços IP entre.1
e.254
(inclusive), excluindo os endereços de rede e broadcast reservados.
Parâmetros de 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 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 de 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 do 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
Esse 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 do balanceador de carga BGP. Usando esse arquivo de parâmetro com o modelo Bicep, você pode criar um cluster com os recursos de balanceador de carga BGP desejados.
{
"$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"
}
]
}
}
}
Observação
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 comandos a seguir.
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ço IP para um serviço de 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 comando a seguir.
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-2
de IP. Ajuste o nome do pool conforme necessário. Antes de experimentar esses exemplos, verifique se você já criou um cluster do 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.
Observação
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óximas etapas
Você pode tentar implantar uma função de rede (NF) dentro do 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 de sua NF.