Partager via


Configurer l’équilibreur de charge du service dans le service Kubernetes De l’opérateur Azure Nexus

Dans cet article, vous allez apprendre à configurer un équilibreur de charge de service dans un cluster Nexus Kubernetes. L’équilibreur de charge permet aux services externes d’accéder aux services exécutés dans le cluster. Le focus de ce guide est sur les aspects de la configuration, en fournissant des exemples pour vous aider à comprendre le processus. En suivant ce guide, vous pouvez configurer efficacement les équilibreurs de charge de service dans votre cluster Nexus Kubernetes.

Prérequis

Avant de suivre ce guide pratique, nous vous recommandons de :

  • Reportez-vous au guide de démarrage rapide du cluster Nexus Kubernetes pour obtenir une vue d’ensemble complète et des étapes impliquées.
  • Veillez à respecter les conditions préalables décrites pour garantir l’implémentation fluide du guide.
  • Connaissance des concepts kubernetes, y compris les déploiements et les services.
  • Contactez votre administrateur réseau pour acquérir une plage d’adresses IP qui peut être utilisée pour le pool d’adresses IP de l’équilibreur de charge.

Limites

  • La configuration du pool IP est immuable : une fois définie, elle ne peut pas être modifiée dans un cluster Nexus Kubernetes.
  • Les noms de pool d’adresses IP doivent commencer par une lettre minuscule ou un chiffre et se terminer par une lettre minuscule ou un chiffre.
  • Les noms de pool d’adresses IP ne doivent pas dépasser 63 caractères pour éviter les éventuels problèmes ou restrictions.
  • Les pools d’adresses IP ne doivent pas chevaucher le préfixe CIDR pod, CIDR de service ou CNI existant pour éviter les conflits et les problèmes réseau au sein du cluster.

Important

Ces instructions concernent la création d’un cluster Kubernetes Nexus. Évitez d’appliquer le modèle Bicep à un cluster existant, car la configuration du pool IP est immuable. Une fois qu’un cluster est créé avec la configuration du pool IP, il ne peut pas être modifié.

Options de configuration

Avant de configurer le pool d’adresses IP pour l’équilibreur de charge du service, il est important de comprendre les différentes options de configuration disponibles. Ces options vous permettent de définir le comportement et les paramètres du pool d’adresses IP en fonction de vos besoins spécifiques.

Examinons les options de configuration du pool d’adresses IP.

Paramètres obligatoires

La configuration du pool d’adresses IP nécessite la présence de deux champs : addresses et name. Ces champs sont essentiels pour définir la plage d’adresses IP et identifier le pool.

  • Le addresses champ spécifie la liste des plages d’adresses IP qui peuvent être utilisées pour l’allocation dans le pool. Vous pouvez définir chaque plage en tant que sous-réseau au format CIDR. Évitez d’utiliser une seule adresse IP, telle que /32 pour IPv4 et /128 pour IPv6.
  • Le name champ sert d’identificateur unique pour le pool d’adresses IP. Il permet d’associer le pool à une publication BGP (Border Gateway Protocol), ce qui permet une communication efficace au sein du cluster.

Remarque

Pour permettre au service Kubernetes LoadBalancer d’avoir une adresse double pile, assurez-vous que la configuration du pool d’adresses IP inclut à la fois IPv4 et IPv6 CIDR.

Paramètres facultatifs

Outre les champs obligatoires, il existe également des champs facultatifs disponibles pour une personnalisation supplémentaire de la configuration du pool d’adresses IP.

  • Le autoAssign champ détermine si les adresses IP sont automatiquement affectées à partir du pool. Ce champ est un string type dont la valeur Truepar défaut est . Vous pouvez le définir sur l’une True ou False l’autre en fonction de vos préférences.
  • Le onlyUseHostIps champ contrôle l’utilisation d’adresses IP se terminant par .0 et .255 dans le pool. L’activation de cette option limite l’utilisation aux adresses IP entre .1 et .254 (inclus), à l’exclusion des adresses réseau et de diffusion réservées.

Paramètres de modèle Bicep pour la configuration du pool d’adresses IP

L’extrait de code JSON suivant montre les paramètres requis pour configurer le pool d’adresses IP dans le modèle Bicep.

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

Pour ajouter la configuration du pool IP à votre cluster, vous devez mettre à jour le kubernetes-deploy-parameters.json fichier que vous avez créé pendant le démarrage rapide. Incluez la configuration du pool IP dans ce fichier en fonction de vos paramètres souhaités.

Après avoir ajouté la configuration du pool IP à votre fichier de paramètres, vous pouvez poursuivre le déploiement du modèle Bicep. Cette action configure votre nouveau cluster avec la configuration de pool d’adresses IP spécifiée, ce qui vous permet d’utiliser le pool d’adresses IP comme prévu.

En suivant ces instructions, vous pouvez créer un cluster Kubernetes Nexus avec la configuration de pool IP souhaitée et tirer parti du pool d’adresses IP pour vos services de cluster.

Exemples de paramètres

Ce fichier de paramètres est destiné à être utilisé avec le modèle Bicep du guide de démarrage rapide pour la création d’un cluster avec l’équilibreur de charge BGP activé. Il contient les paramètres de configuration nécessaires pour configurer le cluster avec la fonctionnalité d’équilibreur de charge BGP. À l’aide de ce fichier de paramètres avec le modèle Bicep, vous pouvez créer un cluster avec les fonctionnalités d’équilibreur de charge BGP souhaitées.

{
  "$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"
        }
      ]
    }
  }
}

Remarque

Si vous envisagez de créer un service DualStack, vérifiez que le pool d’adresses contient à la fois un CIDR IPv4 et un CIDR IPv6. Cela permet la prise en charge simultanée des adresses IPv4 et IPv6 dans votre configuration de l’équilibreur de charge.

Exemple : allocation d’adresses IP statiques pour un service

Pour allouer une adresse IP statique pour un service, vous pouvez utiliser les commandes suivantes.

Créer un déploiement

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

Allocation IP statique (LoadBalancerIP)

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

Remplacez <IP from pool-1> par l’adresse IP souhaitée à partir du pool d’adresses IP.

Allocation IP statique (ExternalIP)

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

Remplacez <IP from pool-1> par l’adresse IP souhaitée à partir du pool d’adresses IP.

Exemple : allocation d’adresses IP pour un service à partir d’un pool d’adresses IP spécifique

Pour allouer une adresse IP pour un service à partir d’un pool d’adresses IP spécifique, vous pouvez utiliser la commande suivante.

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

Cette commande affecte une adresse IP au service à partir du pool pool-2d’adresses IP. Ajustez le nom du pool en fonction des besoins. Avant d’essayer ces exemples, vérifiez que vous avez déjà créé un cluster Nexus Kubernetes avec deux pools d’adresses IP différents. Si vous ne l’avez pas fait, suivez les étapes nécessaires pour créer le cluster et configurer les pools IP en conséquence.

Remarque

Le nom du pool d’adresses IP respecte la casse. Veillez à utiliser le cas approprié lors de la spécification du nom du pool.

Étapes suivantes

Vous pouvez essayer de déployer une fonction réseau (NF) dans votre cluster Nexus Kubernetes à l’aide de l’équilibreur de charge nouvellement configuré. Cette configuration vous permet de tester les fonctionnalités d’équilibrage de charge et d’observer comment le trafic est distribué entre les instances de votre NF.