Kubernetes : présentation du load balancer
Un Load Balancer Kubernetes répartit automatiquement le trafic réseau entre plusieurs pods afin de garantir une charge équilibrée et une haute disponibilité. Il s’appuie généralement sur un service de type « LoadBalancer » qui redirige les requêtes externes vers les services internes. De cette façon, les applications restent accessibles de manière fiable et évolutive.
Managed Kubernetes est la plateforme idéale pour des applications de conteneurs performantes et hautement évolutives.
Qu’est-ce qu’un Load Balancer dans Kubernetes ?
Les Load Balancers permettent de répartir la charge entre plusieurs serveurs ou machines virtuelles de façon efficace, ce qui améliore la performance globale. Placé en amont des serveurs, le Load Balancer évite la surcharge d’un serveur isolé et garantit une utilisation optimale des ressources disponibles. En cas de panne d’un serveur, la répartition de charge redirige automatiquement les requêtes pour maintenir le système fonctionnel.
Les Load Balancers Kubernetes reposent sur le même principe, mais leur fonctionnement diffère légèrement. Avec Kubernetes, on distingue principalement deux types de Load Balancer :
- Kubernetes Load Balancer interne
- Kubernetes Load Balancer externe
Les Load Balancers internes de Kubernetes
Les Load Balancers internes de Kubernetes se distinguent des Load Balancers classiques et sont mentionnés ici par souci de complétude. Ils garantissent que seules les applications exécutées dans le même réseau virtuel que leur cluster Kubernetes puissent y accéder.
Les Load Balancers externes de Kubernetes
Les Load Balancers externes de Kubernetes attribuent une adresse IP ou un nom DNS à un service exposé dans un cluster Kubernetes, ce qui permet de recevoir des requêtes HTTP externes. Pour cela, Kubernetes propose un type de service spécifique appelé « LoadBalancer ». Ce service redirige le trafic externe vers des pods Kubernetes cibles du cluster afin d’assurer une répartition optimale des requêtes entrantes.
Il existe plusieurs méthodes ou algorithmes pour configurer la répartition de charge dans Kubernetes. Le choix dépend entièrement de vos besoins. Ces algorithmes définissent principalement selon quels principes le Load Balancer gère le trafic entrant.
Comment fonctionne un Load Balancer ?
Dans Kubernetes, 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 équilibrée, d’améliorer la disponibilité et de compenser les pannes éventuelles de certains composants.
Sur le plan technique, le Load Balancer reçoit les requêtes entrantes et vérifie quels pods sont disponibles et performants. Kubernetes s’appuie pour cela sur un monitoring interne continu : les pods défaillants ou surchargés sont automatiquement exclus du routage. Le Load Balancer détermine ensuite dynamiquement vers quel pod rediriger chaque requête.
Cette répartition repose sur différents critères, de manière totalement transparente pour les utilisateurs. L’application reste accessible et performante, même lorsque certains pods sont en cours de démarrage, de redéploiement ou tombent en panne.

À quoi sert un Load Balancer ?
Un Kubernetes Load Balancer crée un service au sein du cluster et le rend accessible depuis Internet. Pour mieux comprendre, il faut se pencher sur l’architecture de Kubernetes. Un cluster est composé de plusieurs nœuds, chacun hébergeant plusieurs pods. Chaque pod reçoit une adresse IP interne, qui n’est toutefois pas accessible depuis l’extérieur du cluster.
Rendre le logiciel disponible sous une IP fixe
Pour rendre accessible le logiciel s’exécutant dans les pods sous une adresse IP dédiée, un service Kubernetes est généralement requis. Outre le type « LoadBalancer », il existe d’autres services adaptés à divers scénarios d’utilisation. Tous les types de services ont en commun qu’ils regroupent un ensemble de pods en une unité logique et définissent comment y accéder.
Répartir optimalement le trafic externe
Un Kubernetes Load Balancer est conçu pour assurer une répartition optimale du trafic externe sur les pods de votre cluster Kubernetes. Les services conviennent donc à presque toutes les applications. Étant donné que les Kubernetes Load Balancer peuvent diriger le trafic vers des pods spécifiques, la haute disponibilité de votre cluster est garantie : dès qu’un pod devient défaillant ou présente des erreurs, le Load Balancer s’assure que les tâches sont redistribuées vers les autres pods.
Optimiser la scalabilité
L’utilisation du Load Balancing a également un impact positif sur la scalabilité. Kubernetes peut créer ou supprimer des pods automatiquement en fonction des besoins. Si l’on constate que le trafic entrant nécessite moins ou plus de ressources que ce qui est actuellement disponible, Kubernetes peut réagir automatiquement à cette situation.
Comment créer un Load Balancer pour Kubernetes
Pour créer un Kubernetes Load Balancer, votre cluster doit fonctionner dans un Cloud ou dans un environnement qui prend en charge la configuration de Load Balancers externes.
Chez IONOS, lors de la création d’un Kubernetes 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 intelligemment le trafic entrant entre les différents pods.
La première étape consiste à créer un service, auquel vous attribuez le type « LoadBalancer » à l’aide de la ligne suivante dans le manifest de service :
type: LoadBalancerPar exemple, la configuration d’un Load Balancer Kubernetes peut ressembler à 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 diffé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: TCPyamlUne autre façon de créer un Kubernetes Load Balancer est d’utiliser la ligne de commande kubectl.
kubectl expose deployment test --target-port=9376 \
--name=test-service --type=LoadBalancerbashAvec cette commande, créez et déployez un nouveau service nommé « test-service », qui fonctionne comme un Load Balancer.
Si vous souhaitez découvrir l’adresse IP de votre service nouvellement créé, la commande suivante vous aidera :
kubectl describe services test-servicebash
