Présentation du load balancer avec Kubernetes

Pour travailler le plus efficacement possible avec le logiciel de gestion de conteneurs Kubernetes, il est indispensable que la charge de travail soit intelligemment répartie sur différents pods. Pour ce faire, on utilise un répartiteur de charge, également appelé load balancer, dans Kubernetes.

Managed Kubernetes de IONOS

Le moyen le plus simple de gérer les charges de travail en conteneur. Configuration automatisée des clusters Kubernetes ainsi que visibilité et contrôle maximum des clusters K8s.

Stockage persistant
Assistance 24/7
Configuration automatisée des clusters

Qu’est-ce qu’un load balancer dans Kubernetes ?

Un load balancer sert à répartir le plus efficacement possible lacharge que les serveurs ou les machines virtuelles doivent traiter. De cette manière, la performance globale peut être augmentée. En règle générale, l’équilibreur de charge est placé en amont des serveurs afin d’éviter une surcharge de certains serveurs et de garantir une utilisation optimale des ressources disponibles. Même en cas de panne de serveur, le load balancer garantit le bon fonctionnement du système en redirigeant les demandes de manière ciblée.

Les load balancers de Kubernetes partent du même principe, mais fonctionnent légèrement différemment. Pour Kubernetes, il faut toutefois faire la distinction entre deux types d’équilibreurs de charge différents :

  • Load balancer avec Kubernetes interne
  • Load balancer avec Kubernetes externe

Load balancer avec Kubernetes interne

Les load balancers avec Kubernetes internes suivent une autre approche que les équilibreurs de charge classiques. Ils font en sorte que seules les applications exécutées sur le même réseau virtuel que votre cluster Kubernetes puissent y accéder.

Load balancer avec Kubernetes externe

Les load balancers externes attribuent à un nœud de service d’un cluster Kubernetes sa propre adresse IP ou son propre Domain Name System (DNS) afin qu’il puisse recevoir des requêtes HTTP externes. L’équilibreur de charge est un type de service Kubernetes spécial. Il a pour but de rediriger le trafic externe vers les différents pods de votre cluster, afin de garantir une répartition optimale des requêtes entrantes. Cet article du Digital Guide de IONOS traite principalement des load balancers externes.

Il existe différentes possibilités ou algorithmes pour configurer les load balancers dans Kubernetes. Celui que vous choisissez dépend entièrement de vos besoins individuels. Les différents algorithmes déterminent avant tout le processus de traitement du trafic entrant par l’équilibreur de charge.

Conseil

Vous n’utilisez pas encore Kubernetes ? Avec IONOS Managed Kubernetes, vous pouvez facilement déployer vos applications de conteneurs sur Kubernetes et profiter des nombreux avantages du logiciel de gestion de conteneurs ! Notre tutoriel Kubernetes vous aide à faire vos premiers pas dans l’utilisation de Kubernetes.

A quoi sert un load balancer avec Kubernetes ?

Un load balancer avec Kubernetes définit un service exécuté dans le cluster, ce service doit être accessible via un réseau Internet public. Pour comprendre ce point, il est intéressant d’étudier l’architecture Kubernetes : un cluster comprend plusieurs nœuds, qui contiennent eux-mêmes plusieurs pods. Une IP interne est attribuée à chaque pod du cluster, cette adresse n’est pas accessible de l’extérieur du cluster. Ce fonctionnement est expliqué par le fait que les pods sont automatiquement créés et supprimés, alors que les IP peuvent être réattribuées.

Un service Kubernetes est généralement nécessaire pour pouvoir utiliser les logiciels exécutés à une adresse fixe dans les pods. En plus du load balancer, il existe d’autres types de services convenant à différents cas d’utilisation. Tous ces types de services ont cependant en commun le fait qu’ils regroupent un ensemble de pods dans un même dispositif logique et en décrivent les méthodes d’accès :

Citation

« A Service is an abstraction which defines a logical set of Pods and a policy by which to access them » / Source : kubernetes.io/docs/concepts/services-networking/service/


Traduction : « un service est une abstraction qui regroupe de façon logique un ensemble de pods et définit une procédure d’accès à ces derniers » (traduit par IONOS)

Un load balancer dans Kubernetes doit veiller à une répartition optimale du trafic externe sur les pods de votre cluster Kubernetes. C’est pourquoi ces services conviennent à pratiquement toutes les utilisations. Le fait qu’un load balancer avec Kubernetes puisse diriger le trafic de manière ciblée vers les différents pods garantit une haute disponibilité de votre cluster : dès qu’un pod ne fonctionne pas ou présente des erreurs, l’équilibreur de charge veille à ce que les tâches soient réparties sur les autres pods.

L’évolutivité est également influencée positivement par l’utilisation du load balancer avec Kubernetes puisqu’il permet également de créer ou supprimer automatiquement des pods en fonction de ses besoins. Ainsi, s’il est constaté que le trafic entrant nécessite moins ou plus de ressources que celles actuellement disponibles, Kubernetes peut réagir automatiquement à cette situation.

Comment créer un load balancer avec Kubernetes ?

Pour créer un load balancer avec Kubernetes, il est nécessaire que votre cluster fonctionne dans un Cloud ou dans un autre environnement qui supporte la configuration de load balancers externes.

Avec IONOS, une IP statique est attribuée à un nœud du cluster lors de la création d’un load balancer dans Kubernetes. Cette adresse IP permet d’accéder au service depuis l’extérieur du cluster. Le proxy Kube fonctionnant sur le nœud distribue le trafic aux différents pods.

Tout d’abord, créez un service auquel vous attribuez ensuite le type de service load balancer avec la ligne suivante :

type: LoadBalancer

La configuration d’un load balancer dans Kubernetes peut par exemple se présenter ainsi : le service regroupe les pods avec le sélecteur Web-app. Comme on peut le voir dans l’exemple suivant, le trafic entrant sous l’IP du load balancer sur le port 8080 est réparti sur les différents pods individuels. Le service fonctionnant sur le port 80 de chaque pod est alors sollicité :

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

Une autre façon de créer un load balancer dans Kubernetes est d’utiliser la ligne de commande kubectl.

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

En utilisant la commande citée ci-dessus, vous créez et déployez un nouveau service appelé test-service, qui fait office de load balancer.

Si vous souhaitez trouver l’adresse IP du service que vous venez de créer, la commande suivante vous aidera :

kubectl describe services test-service