Un Load Balancer Ku­ber­netes répartit au­to­ma­ti­que­ment le trafic réseau entre plusieurs pods afin de garantir une charge équi­li­brée et une haute dis­po­ni­bi­lité. Il s’appuie gé­né­ra­le­ment sur un service de type « Load­Ba­lan­cer » qui redirige les requêtes externes vers les services internes. De cette façon, les ap­pli­ca­tions restent ac­ces­sibles de manière fiable et évolutive.

Managed Ku­ber­netes de IONOS Cloud
Or­ches­trez vos charges de travail en toute sécurité

Managed Ku­ber­netes est la pla­te­forme idéale pour des ap­pli­ca­tions de con­te­neurs per­for­mantes et hautement évo­lu­tives.

Qu’est-ce qu’un Load Balancer dans Ku­ber­netes ?

Les Load Balancers per­met­tent de répartir la charge entre plusieurs serveurs ou machines vir­tuelles de façon efficace, ce qui améliore la per­for­mance globale. Placé en amont des serveurs, le Load Balancer évite la surcharge d’un serveur isolé et garantit une uti­li­sa­tion optimale des res­sources dis­po­nibles. En cas de panne d’un serveur, la ré­par­ti­tion de charge redirige au­to­ma­ti­que­ment les requêtes pour maintenir le système fonc­tion­nel.

Les Load Balancers Ku­ber­netes reposent sur le même principe, mais leur fonc­tion­ne­ment diffère lé­gè­re­ment. Avec Ku­ber­netes, on distingue prin­ci­pa­le­ment deux types de Load Balancer :

  • Ku­ber­netes Load Balancer interne
  • Ku­ber­netes Load Balancer externe

Les Load Balancers internes de Ku­ber­netes

Les Load Balancers internes de Ku­ber­netes se dis­tin­guent des Load Balancers clas­siques et sont men­tion­nés ici par souci de com­plé­tude. Ils ga­ran­tis­sent que seules les ap­pli­ca­tions exécutées dans le même réseau virtuel que leur cluster Ku­ber­netes puissent y accéder.

Les Load Balancers externes de Ku­ber­netes

Les Load Balancers externes de Ku­ber­netes at­tri­buent une adresse IP ou un nom DNS à un service exposé dans un cluster Ku­ber­netes, ce qui permet de recevoir des requêtes HTTP externes. Pour cela, Ku­ber­netes propose un type de service spé­ci­fique appelé « Load­Ba­lan­cer ». Ce service redirige le trafic externe vers des pods Ku­ber­netes cibles du cluster afin d’assurer une ré­par­ti­tion optimale des requêtes entrantes.

Note

Il existe plusieurs méthodes ou al­go­rithmes pour con­fi­gu­rer la ré­par­ti­tion de charge dans Ku­ber­netes. Le choix dépend en­tiè­re­ment de vos besoins. Ces al­go­rithmes dé­fi­nis­sent prin­ci­pa­le­ment selon quels principes le Load Balancer gère le trafic entrant.

Comment fonc­tionne un Load Balancer ?

Dans Ku­ber­netes, un Load Balancer a pour rôle principal de répartir le trafic réseau entre plusieurs instances d’un service, c’est-à-dire les pods. L’objectif est de maintenir une charge équi­li­brée, d’améliorer la dis­po­ni­bi­lité et de compenser les pannes éven­tuelles de certains com­po­sants.

Sur le plan technique, le Load Balancer reçoit les requêtes entrantes et vérifie quels pods sont dis­po­nibles et per­for­mants. Ku­ber­netes s’appuie pour cela sur un mo­ni­to­ring interne continu : les pods dé­fail­lants ou sur­char­gés sont au­to­ma­ti­que­ment exclus du routage. Le Load Balancer détermine ensuite dy­na­mi­que­ment vers quel pod rediriger chaque requête.

Cette ré­par­ti­tion repose sur dif­fé­rents critères, de manière to­ta­le­ment trans­pa­rente pour les uti­li­sa­teurs. L’ap­pli­ca­tion reste ac­ces­sible et per­for­mante, même lorsque certains pods sont en cours de démarrage, de re­dé­ploie­ment ou tombent en panne.

Image: Aperçu du fonctionnement du Load Balancer de Kubernetes
Le Load Balancer distribue le trafic externe vers les pods d’un service, re­pré­sen­tés en jaune dans le cluster Ku­ber­netes.

À quoi sert un Load Balancer ?

Un Ku­ber­netes Load Balancer crée un service au sein du cluster et le rend ac­ces­sible depuis Internet. Pour mieux com­prendre, il faut se pencher sur l’ar­chi­tec­ture de Ku­ber­netes. Un cluster est composé de plusieurs nœuds, chacun hé­ber­geant plusieurs pods. Chaque pod reçoit une adresse IP interne, qui n’est toutefois pas ac­ces­sible depuis l’extérieur du cluster.

Rendre le logiciel dis­po­nible sous une IP fixe

Pour rendre ac­ces­sible le logiciel s’exécutant dans les pods sous une adresse IP dédiée, un service Ku­ber­netes est gé­né­ra­le­ment requis. Outre le type « Load­Ba­lan­cer », il existe d’autres services adaptés à divers scénarios d’uti­li­sa­tion. Tous les types de services ont en commun qu’ils re­grou­pent un ensemble de pods en une unité logique et dé­fi­nis­sent comment y accéder.

Répartir op­ti­ma­le­ment le trafic externe

Un Ku­ber­netes Load Balancer est conçu pour assurer une ré­par­ti­tion optimale du trafic externe sur les pods de votre cluster Ku­ber­netes. Les services con­vien­nent donc à presque toutes les ap­pli­ca­tions. Étant donné que les Ku­ber­netes Load Balancer peuvent diriger le trafic vers des pods spé­ci­fiques, la haute dis­po­ni­bi­lité de votre cluster est garantie : dès qu’un pod devient dé­fail­lant ou présente des erreurs, le Load Balancer s’assure que les tâches sont re­dis­tri­buées vers les autres pods.

Optimiser la sca­la­bi­lité

L’uti­li­sa­tion du Load Balancing a également un impact positif sur la sca­la­bi­lité. Ku­ber­netes peut créer ou supprimer des pods au­to­ma­ti­que­ment en fonction des besoins. Si l’on constate que le trafic entrant nécessite moins ou plus de res­sources que ce qui est ac­tuel­le­ment dis­po­nible, Ku­ber­netes peut réagir au­to­ma­ti­que­ment à cette situation.

Comment créer un Load Balancer pour Ku­ber­netes

Pour créer un Ku­ber­netes Load Balancer, votre cluster doit fonc­tion­ner dans un Cloud ou dans un en­vi­ron­ne­ment qui prend en charge la con­fi­gu­ra­tion de Load Balancers externes.

Chez IONOS, lors de la création d’un Ku­ber­netes Load Balancer, une IP statique est au service exposé. Cette IP permet d’accéder au service depuis l’extérieur. Le Kube-Proxy exécuté sur le nœud répartit ensuite in­tel­li­gem­ment le trafic entrant entre les dif­fé­rents pods.

La première étape consiste à créer un service, auquel vous attribuez le type « Load­Ba­lan­cer » à l’aide de la ligne suivante dans le manifest de service :

type: LoadBalancer

Par exemple, la con­fi­gu­ra­tion d’un Load Balancer Ku­ber­netes peut res­sem­bler à ceci : le service regroupe les pods sous le sélecteur « web-app ». Le trafic entrant sur l’adresse IP du Load Balancer via le port 8080 est distribué aux dif­fé­rents pods, chacun exécutant le service sur le port 80 :

apiVersion: v1
kind: Service
metadata:
    name: web-app-service
spec:
    selector:
        app: web-app
    type: LoadBalancer
    loadBalancerIP: 203.0.113.0
    ports:
        - name: http
            port: 8080
            targetPort: 80
            protocol: TCP
yaml

Une autre façon de créer un Ku­ber­netes Load Balancer est d’utiliser la ligne de commande kubectl.

kubectl expose deployment test --target-port=9376 \
    --name=test-service --type=LoadBalancer
bash

Avec cette commande, créez et déployez un nouveau service nommé « test-service », qui fonc­tionne comme un Load Balancer.

Si vous souhaitez découvrir l’adresse IP de votre service nou­vel­le­ment créé, la commande suivante vous aidera :

kubectl describe services test-service
bash
Aller au menu principal