Configurare il servizio di bilanciamento del carico nel servizio Nexus Kubernetes dell'operatore di Azure

Questo articolo illustra come configurare un servizio di bilanciamento del carico in un cluster Nexus Kubernetes. Il servizio di bilanciamento del carico consente ai servizi esterni di accedere ai servizi in esecuzione all'interno del cluster. L'attenzione di questa guida riguarda gli aspetti di configurazione, fornendo esempi che consentono di comprendere il processo. Seguendo questa guida, è possibile configurare in modo efficace i servizi di bilanciamento del carico nel cluster Nexus Kubernetes.

Prerequisiti

Prima di procedere con questa guida pratica, è consigliabile:

  • Per una panoramica completa e i passaggi necessari, vedere la guida introduttiva al cluster Nexus Kubernetes.
  • Assicurarsi di soddisfare i prerequisiti descritti per garantire un'implementazione uniforme della guida.
  • Conoscenza dei concetti di Kubernetes, tra cui distribuzioni e servizi.
  • Contattare l'amministratore di rete per acquisire un intervallo di indirizzi IP che può essere usato per il pool IP del servizio di bilanciamento del carico.

Limiti

  • La configurazione del pool IP non è modificabile: una volta impostata, non può essere modificata in un cluster Nexus Kubernetes.
  • I nomi del pool IP devono iniziare con una lettera minuscola o una cifra e terminare con una lettera minuscola o una cifra.
  • I nomi del pool IP non devono superare i 63 caratteri per evitare potenziali problemi o restrizioni.
  • I pool di indirizzi IP non devono sovrapporsi con il prefisso CIDR, CIDR del servizio o CNI esistente per evitare conflitti e problemi di rete all'interno del cluster.

Importante

Queste istruzioni sono per la creazione di un nuovo cluster Nexus Kubernetes. Evitare di applicare il modello Bicep a un cluster esistente, perché la configurazione del pool IP non è modificabile. Dopo aver creato un cluster con la configurazione del pool IP, non può essere modificato.

Opzioni di configurazione

Prima di configurare il pool di indirizzi IP per il servizio di bilanciamento del carico, è importante comprendere le varie opzioni di configurazione disponibili. Queste opzioni consentono di definire il comportamento e i parametri del pool di indirizzi IP in base ai requisiti specifici.

Verranno ora esaminate le opzioni di configurazione per il pool di indirizzi IP.

Parametri obbligatori

La configurazione del pool di indirizzi IP richiede la presenza di due campi: addresses e name. Questi campi sono essenziali per definire l'intervallo di indirizzi IP e identificare il pool.

  • Il addresses campo specifica l'elenco di intervalli di indirizzi IP che possono essere usati per l'allocazione all'interno del pool. È possibile definire ogni intervallo come subnet in formato CIDR. Evitare di usare un singolo indirizzo IP, ad esempio /32 per IPv4 e /128 per IPv6.
  • Il name campo funge da identificatore univoco per il pool di indirizzi IP. Consente di associare il pool a un annuncio BGP (Border Gateway Protocol), consentendo una comunicazione efficace all'interno del cluster.

Nota

Per abilitare il servizio Kubernetes LoadBalancer per avere un indirizzo dual stack, assicurarsi che la configurazione del pool IP includa sia CIDR IPv4 che IPv6.

Parametri facoltativi

Oltre ai campi obbligatori, sono disponibili anche campi facoltativi per un'ulteriore personalizzazione della configurazione del pool di indirizzi IP.

  • Il autoAssign campo determina se gli indirizzi IP vengono assegnati automaticamente dal pool. Questo campo è un string tipo con un valore predefinito .True È possibile impostarlo True su o False in base alle preferenze.
  • Il onlyUseHostIps campo controlla l'uso degli indirizzi IP che terminano con .0 e .255 all'interno del pool. L'abilitazione di questa opzione limita l'utilizzo agli indirizzi IP compresi tra .1 e .254 (inclusi), esclusi gli indirizzi di rete e broadcast riservati.

Parametri del modello Bicep per la configurazione del pool di indirizzi IP

Il frammento JSON seguente mostra i parametri necessari per la configurazione del pool di indirizzi IP nel modello Bicep.

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

Per aggiungere la configurazione del pool IP al cluster, è necessario aggiornare il kubernetes-deploy-parameters.json file creato durante la guida introduttiva. Includere la configurazione del pool IP in questo file in base alle impostazioni desiderate.

Dopo aver aggiunto la configurazione del pool IP al file di parametri, è possibile procedere con la distribuzione del modello Bicep. Questa azione configura il nuovo cluster con la configurazione del pool di indirizzi IP specificata, consentendo di usare il pool di indirizzi IP come previsto.

Seguendo queste istruzioni, è possibile creare un nuovo cluster Nexus Kubernetes con la configurazione del pool IP desiderato e sfruttare il pool di indirizzi IP per i servizi cluster.

Parametri di esempio

Questo file di parametri deve essere usato con il modello Bicep della guida introduttiva per la creazione di un cluster con bilanciamento del carico BGP abilitato. Contiene le impostazioni di configurazione necessarie per configurare il cluster con la funzionalità di bilanciamento del carico BGP. Usando questo file di parametri con il modello Bicep, è possibile creare un cluster con le funzionalità di bilanciamento del carico BGP desiderate.

{
  "$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"
    },
    "sshPublicKey": {
      "value": "ssh-rsa AAAAB...."
    },
    "ipAddressPools": {
      "value": [
        {
          "addresses": ["<IP>/<CIDR>"],
          "name": "<pool-name>",
          "autoAssign": "True",
          "onlyUseHostIps": "True"
        }
      ]
    }
  }
}

Nota

Se si intende creare un servizio DualStack, assicurarsi che il pool di indirizzi contenga sia un CIDR IPv4 che un CIDR IPv6. Ciò consente il supporto simultaneo di indirizzi IPv4 e IPv6 nella configurazione del servizio di bilanciamento del carico.

Esempio: Allocazione di indirizzi IP statici per un servizio

Per allocare un indirizzo IP statico per un servizio, è possibile usare i comandi seguenti.

Creare una distribuzione

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

Allocazione ip statica (LoadBalancerIP)

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

Sostituire <IP from pool-1> con l'indirizzo IP desiderato dal pool IP.

Allocazione IP statica (ExternalIP)

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

Sostituire <IP from pool-1> con l'indirizzo IP desiderato dal pool IP.

Esempio: Allocazione di indirizzi IP per un servizio da un pool IP specifico

Per allocare un indirizzo IP per un servizio da un pool IP specifico, è possibile usare il comando seguente.

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

Questo comando assegna un indirizzo IP al servizio dal pool pool-2IP . Modificare il nome del pool in base alle esigenze. Prima di provare questi esempi, assicurarsi di aver già creato un cluster Nexus Kubernetes con due pool di indirizzi IP diversi. Se non è stato fatto, seguire i passaggi necessari per creare il cluster e configurare di conseguenza i pool IP.

Nota

Il nome del pool di indirizzi IP fa distinzione tra maiuscole e minuscole. Assicurarsi di usare il caso corretto quando si specifica il nome del pool.

Passaggi successivi

È possibile provare a distribuire una funzione di rete (NF) all'interno del cluster Nexus Kubernetes usando il servizio di bilanciamento del carico appena configurato. Questa configurazione consente di testare le funzionalità di bilanciamento del carico e osservare come il traffico viene distribuito tra le istanze di NF.