Partager via


Utiliser un équilibreur de charge Standard public dans Azure Kubernetes Service (AKS)

Azure Load Balancer est sur la couche 4 (L4) du modèle OSI (Open Systems Interconnection) qui prend en charge les scénarios entrants et sortants. Il distribue les flux entrants arrivant sur le serveur front-end de l’équilibreur de charge sur des instances du pool de back-ends.

Intégré à AKS, un équilibreur de charge public remplit deux fonctions :

  • Fournissez des connexions sortantes aux nœuds du cluster à l’intérieur du réseau virtuel AKS en traduisant l’adresse IP privée en une adresse IP publique faisant partie de son pool sortant.
  • Fournissez l’accès aux applications via des services Kubernetes de type LoadBalancer, ce qui vous permet de mettre facilement à l’échelle vos applications et de créer des services hautement disponibles.

Cet article traite de l’intégration à un équilibreur de charge public sur AKS. Pour l’intégration à un équilibreur de charge interne, consultez Utiliser un équilibreur de charge interne dans AKS.

Prerequisites

  • Azure Load Balancer se décline en deux références SKU : De base et Standard. La référence SKU Standard est utilisée par défaut quand vous créez un cluster AKS. La référence SKU Standard vous permet d’accéder à des fonctionnalités ajoutées, telles qu’un pool principal plus grand, plusieurs pools de nœuds, zones de disponibilitéet est sécurisé par défaut. Il s’agit de la référence SKU d’équilibreur de charge recommandée pour AKS. Pour plus d’informations sur les références SKU De base et Standard, consultez Comparaison des références SKU d’Azure Load Balancer.
  • Pour obtenir une liste complète des annotations prises en charge pour les services Kubernetes avec le type LoadBalancer, consultez Annotations LoadBalancer.
  • Cet article part du principe que vous disposez d’un cluster AKS avec la référence SKU Azure Load Balancer Standard. Si vous avez besoin d’un cluster AKS, vous pouvez en créer un à l’aide d’Azure CLI, d’Azure PowerShell ou du portail Azure.

Important

Si vous préférez utiliser votre propre passerelle, pare-feu ou proxy pour fournir une connexion sortante, vous pouvez ignorer la création du pool sortant de l’équilibreur de charge et de l’adresse IP frontale respective en utilisant un type de sortie UserDefinedRouting (UDR). Le type de sortie définit la méthode de sortie d’un cluster et correspond par défaut au typeLoadBalancer.

Limitations

Les limitations suivantes s’appliquent lorsque vous créez et gérez des clusters AKS prenant un charge un équilibreur de charge avec la référence SKU Standard :

  • AKS gère le cycle de vie et les opérations des nœuds de l’agent. La modification des ressources IaaS associées aux nœuds de l’agent n’est pas prise en charge. Un exemple d’opération non prise en charge est d’apporter des modifications manuelles au groupe de ressources de l’équilibreur de charge.

  • Au moins une adresse IP publique ou un préfixe IP sont requis pour autoriser le trafic sortant du cluster AKS. L’adresse IP publique et le préfixe IP sont nécessaires pour maintenir la connectivité entre le plan de contrôle et les nœuds d’agent ainsi que pour assurer la compatibilité avec les versions précédentes d’AKS. Vous disposez des options suivantes pour spécifier des adresses IP publiques ou des préfixes IP avec un équilibreur de charge SKU Standard :

    • Fournir vos propres adresses IP publiques.
    • Fournir vos propres préfixes IP publics.
    • Spécifier un nombre de 1 à 100 pour autoriser le cluster AKS à créer ce nombre d’adresses IP publiques à référence SKU Standard dans le même groupe de ressources que le cluster AKS. Ce groupe de ressources est généralement nommé avec MC_ au début. AKS attribue l’adresse IP publique pour l’équilibreur de charge de référence SKU Standard. Par défaut, une adresse IP publique est automatiquement créée dans le même groupe de ressources que le cluster AKS si aucune adresse IP publique, aucun préfixe IP public ou aucun nombre d’adresses IP ne sont spécifiés. Vous devez également autoriser des adresses publiques et éviter de créer des stratégies Azure interdisant la création d’adresses IP.
  • Une adresse IP publique créée par AKS ne peut pas être réutilisée en tant qu’adresse IP publique (BYO) personnalisée. Vous devez créer et gérer toutes les adresses IP personnalisées.

  • Vous ne pouvez définir la référence SKU de l’équilibreur de charge que lorsque vous créez un cluster AKS. Vous ne pouvez pas modifier la référence SKU de l’équilibreur de charge après la création d’un cluster AKS.

  • Vous pouvez utiliser un seul type de référence SKU d’équilibreur de charge (De base ou Standard) dans un même cluster.

  • Les Load Balancers à référence SKU Standard prennent uniquement en charge les adresses IP à référence SKU Standard.

  • Le service Private Link n’est pas pris en charge lorsque le type de pool principal de l’équilibreur de charge est défini nodeIPsur .

Créer un service d’équilibreur de charge dans AKS

Une fois que vous avez créé un cluster AKS avec le type de sortie LoadBalancer (par défaut), votre cluster est prêt à utiliser l’équilibreur de charge pour exposer les services.

  • Créez un manifeste de service nommé public-svc.yaml, qui crée un service public de type LoadBalancer.

    apiVersion: v1
    kind: Service
    metadata:
      name: public-svc
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: public-app
    

Spécifier l’adresse IP de l’équilibreur de charge

Si vous souhaitez utiliser une adresse IP spécifique avec l’équilibreur de charge, vous avez deux options pour spécifier l’adresse IP :

  • Définissez des annotations de service (recommandé) : utilisez-la service.beta.kubernetes.io/azure-load-balancer-ipv4 pour une adresse IPv4 et service.beta.kubernetes.io/azure-load-balancer-ipv6 pour une adresse IPv6.
  • Ajoutez la propriété LoadBalancerIP au manifeste YAML de l’équilibreur de charge : ajoutez la Service.Spec.LoadBalancerIP propriété au manifeste YAML de l’équilibreur de charge. Ce champ est déprécié après Kubernetes en amont et ne peut pas prendre en charge la double pile. L’utilisation actuelle reste la même et les services existants sont censés fonctionner sans modification.

Déployer le manifeste du service d’équilibreur de charge

  1. Déployez le manifeste de service public avec la commande kubectl apply et spécifiez le nom de votre manifeste YAML.

    kubectl apply -f public-svc.yaml
    

    Azure Load Balancer est configuré avec une nouvelle adresse IP publique placée au premier plan du nouveau service. Étant donné qu’Azure Load Balancer peut avoir plusieurs adresses IP frontales, chaque nouveau service que vous déployez obtient une nouvelle adresse IP frontale dédiée et accessible de manière unique.

  2. Vérifiez que votre service est créé et que l’équilibreur de charge est configuré à l’aide de la kubectl get service commande.

    kubectl get service public-svc
    

    Lorsque vous affichez les détails du service, l’adresse IP publique créée pour ce service sur l’équilibreur de charge est affichée dans la colonne EXTERNAL-IP de la sortie. Le passage de l’adresse IP de l’état <en attente> à l’état d’adresse IP publique effective peut prendre une ou deux minutes. L’exemple de sortie suivant illustre la création réussie du service :

    NAMESPACE     NAME          TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)         AGE
    default       public-svc    LoadBalancer   10.0.39.110    203.0.113.187   80:32068/TCP    52s
    
  3. Obtenez des informations plus détaillées sur votre service à l’aide de la kubectl describe service commande.

    kubectl describe service public-svc
    

    L’exemple de sortie suivant est une version condensée de la sortie après l’exécution de kubectl describe service. Entrée de l’équilibreur de charge affiche l’adresse IP externe exposée par votre service. Adresse IP affiche les adresses internes.

    Name:                        public-svc
    Namespace:                   default
    Labels:                      <none>
    Annotations:                 <none>
    Selector:                    app=public-app
    ...
    IP:                          10.0.39.110
    ...
    LoadBalancer Ingress:        203.0.113.187
    ...
    TargetPort:                  80/TCP
    NodePort:                    32068/TCP
    ...
    Session Affinity:            None
    External Traffic Policy:     Cluster
    ...
    

Étape suivante