Qu'est-ce que l'équilibreur de charge Kubernetes?
Les équilibreurs de charge distribuent un trafic entrant sur un groupe d'hôtes pour garantir des charges de travail optimales et une haute disponibilité. En raison de sa conception sous-jacente, l'architecture distribuée d'un cluster de Kubernetes repose sur plusieurs instances de services, qui pose des défis en l'absence d'allocation de charge appropriée.
Un équilibreur de charge est un contrôleur de trafic qui achemine les demandes du client aux nœuds qui peuvent les servir rapidement et efficacement. L'équilibreur de charge redistribue la charge de travail sur les nœuds restants lorsque l'un des hôtes échoue. Lorsqu'un nouveau nœud entre dans un cluster, en revanche, le service commence automatiquement à envoyer des demandes aux gousses qui y sont associées.
Un service d'équilibreur de charge dans un cluster Kubernetes fait ce qui suit:
Comment ajouter un équilibreur de charge à un cluster Kubernetes?
Un équilibreur de charge peut être ajouté à un cluster Kubernetes de deux manières:
Par l'utilisation d'un fichier de configuration:
L'équilibreur de charge est activé en spécifiant LoadBalancer dans le champ de type du fichier de configuration du service. Le fournisseur de services cloud gère et guide cet équilibreur de charge, qui envoie du trafic aux gousses arrière. Le fichier de configuration du service doit ressembler à ce qui suit:
Les utilisateurs peuvent être en mesure d'attribuer une adresse IP à l'équilibreur de chargement en fonction du fournisseur de cloud. La balise LoadBalancerip spécifiée par l'utilisateur peut être utilisée pour configurer cela. Si l'utilisateur ne fournit pas d'adresse IP, l'équilibreur de chargement se voit attribuer une adresse IP éphémère. Si l'utilisateur spécifie une adresse IP que le fournisseur de cloud ne prend pas en charge, il est ignoré.
Le.statut.La propriété LoadBalancer doit être utilisée si l'utilisateur souhaite ajouter plus d'informations au service d'équilibreur de chargement. Voir l'image ci-dessous pour définir l'adresse IP entrant.
statut:En utilisant kubectl:
Le -ype = loadbalancer: le paramètre peut également être utilisé pour construire un équilibreur de charge avec la commande kubectl exposition.
La commande ci-dessus crée le nouveau service et connecte le nouveau pod à un port spécifique.
Qu'est-ce que les ordures collectant des équilibres de chargement?
Lorsqu'un service de type chargeur est détruit, les ressources de l'équilibrage de charge associées dans le fournisseur de cloud doivent être nettoyées dès que possible. Cependant, il est bien connu que les ressources cloud peuvent devenir orphelines si le service connexe est supprimé dans une variété de situations. Pour éviter que cela ne se produise, la protection Finalizer pour le service de chargement des services a été développée.
Si un service est de Type LoadBalancer, le contrôleur de service ajoutera un service nommé Finalizer.kubernetes.Io / chargeur-balancer-Cleanup. Le finalizer sera effacé après que la ressource de l'équilibreur de charge ait déjà été nettoyée. Même dans des cas extrêmes, comme lorsque le contrôleur de service se bloque, cela empêche les ressources de l'équilibrage de chargement qui.
Différentes façons de configurer l'équilibreur de chargement à Kubernetes
Pour la gestion du trafic externe vers les gousses, des méthodes de chargement de chargement Kubernetes et des algorithmes sont disponibles.
Roundbin
Une approche à la ronde distribue de nouvelles connexions aux serveurs qualifiés dans un ordre séquentiel. Cette technique est statique, ce qui signifie qu'elle ne prend pas en considération des vitesses spécifiques du serveur ou des problèmes de performances, donc un serveur lent et un serveur mieux performant recevront tous deux le même nombre de connexions. En conséquence, l'équilibrage de la charge de la ronde n'est pas toujours le meilleur choix pour le trafic de production et est mieux adapté aux tests de chargement simples.
Kube-Proxy L4 Round Round Robin
Le Kube-Proxy recueille et achemine toutes les demandes présentées au service Kubernetes.
Parce qu'il s'agit d'un processus et non d'un proxy, il utilise une IP virtuelle pour le service. Il ajoute ensuite l'architecture ainsi que la complexité au routage. Chaque demande ajoute à la latence, et le problème s'aggrave à mesure que le nombre de services augmente.
L7 Round Robin
Parfois, le routage du trafic directement vers les pods évite le kube-proxy. Cela peut être accompli avec une passerelle API Kubernetes qui utilise un proxy L7 pour répondre aux demandes parmi les gousses Kubernetes disponibles.
Hachage de hachage / anneau cohérent
L'équilibreur de charge Kubernetes utilise un hachage basé sur une clé définie pour distribuer de nouvelles connexions sur les serveurs en utilisant des techniques de hachage cohérentes. Cette stratégie est la meilleure pour gérer de grands serveurs de cache avec du contenu dynamique.
Étant donné que la table de hachage complète n'a pas besoin d'être recalculé chaque fois qu'un serveur est ajouté ou retiré, cette approche est cohérente.
Moins de serveurs
Plutôt que de répartir toutes les demandes parmi tous les serveurs, la technique du plus serveur classe la plus petite quantité de serveurs obligatoire pour remplir la charge client actuelle. Des serveurs excessifs peuvent être refusés ou déposés pour le moment.
Cette technique fonctionne en suivant les variations de la latence de réponse lorsque la charge varie en fonction de la capacité du serveur.
Moindres connexions
Cet algorithme d'équilibrage de charge dans Kubernetes achemine les demandes du client vers le serveur d'applications avec le moins de connexions actives au moment de la demande. Cette méthode utilise une charge de connexion active au compte car un serveur d'applications peut être surchargé en raison de connexions à plus long terme si les serveurs d'application ont des exigences égales.
Conclusion
Cet article visait à donner aux lecteurs une compréhension complète de l'équilibrage des charges de Kubernetes, couvrant son architecture et de nombreuses méthodes d'approvisionnement pour un cluster de Kubernetes. L'équilibrage des charges est un élément important de l'exécution d'un cluster Kubernetes efficace et est l'un des principaux travaux d'un administrateur de Kubernetes. Les tâches peuvent être planifiées efficacement sur les gousses de cluster et les nœuds à l'aide d'un équilibreur de chargement à chargement optimal, permettant une haute disponibilité, une récupération rapide et une faible latence pour les applications conteneurisées fonctionnant sur Kubernetes.