Mise en réseau Kubernetes : un guide complet pour comprendre le modèle de réseau

Publié: 2020-02-18

La gestion des conteneurs est un aspect essentiel de la mise en réseau. Avec l'évolution des exigences de trafic d'aujourd'hui, l'importance de Kubernetes a décuplé. Et si vous souhaitez en savoir plus sur la mise en réseau, vous devrez d'abord vous familiariser avec Kubernetes. En savoir plus sur Kubernetes vous aidera à gérer efficacement la gestion des conteneurs. Kubernetes est également l'un des meilleurs outils DevOps du marché pour 2020.

Mais ne vous inquiétez pas car, dans ce guide détaillé, nous discuterons de la même chose. Kubernetes est un outil de gestion de conteneurs, et dans cet article, vous apprendrez pourquoi il est utilisé, quels sont les composants de son réseau et comment ils acheminent le trafic.

Apprenez le génie logiciel en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Plongeons dedans.

Table des matières

Qu'est-ce que Kubernetes ?

Avant de commencer à discuter de la mise en réseau dans Kubernetes, nous devons considérer les concepts de base de cet outil. De cette façon, vous ne rencontrerez pas de confusion plus tard dans l'article et aurez une compréhension de base de tout ce qui est mentionné ici.

Kubernetes est un outil open source d'orchestration de conteneurs. Il vous aide à gérer les conteneurs, qui sont devenus l'aspect le plus critique de la mise en réseau de nos jours. Kubernetes a de nombreuses fonctions, notamment la mise à l'échelle des conteneurs, le déploiement des conteneurs, le détartrage des conteneurs, etc.

Alors que Docker aide les professionnels à créer des conteneurs, Kubernetes les aide à les gérer. C'est pourquoi les deux sont si importants. Kubernetes exécute un système distribué sur un cluster. Comprendre sa structure et sa mise en réseau vous permettra d'éviter les erreurs et de gérer les conteneurs sans erreurs.

Pourquoi Kubernetes est-il utilisé ?

Les besoins en conteneurs des entreprises ont considérablement augmenté ces dernières années. À moins qu'ils ne soient trop petits, ils ne peuvent pas compter sur un ou deux conteneurs. Ils auraient besoin d'un grand ensemble de conteneurs pour l'équilibrage de charge. Le besoin pourrait se chiffrer en centaines pour maintenir une haute disponibilité et équilibrer le trafic.

Lorsque le trafic augmenterait, ils auraient besoin de plus de conteneurs pour traiter les demandes. De même, lorsque le trafic sera moindre, il faudra réduire les conteneurs. La gestion des conteneurs en fonction de la demande peut être difficile, surtout si vous le faites manuellement.

Orchestrer manuellement les conteneurs peut prendre beaucoup de temps et de ressources, qui auraient facilement été dépensés ailleurs. L'automatisation de cette tâche rend les choses beaucoup plus simples. Ensuite, vous n'auriez pas à vous soucier du détartrage et du détartrage des conteneurs. C'est ce que fait Kubernetes. Découvrez comment créer des projets DevOps pour les débutants avec l'aide de Kubernetes dans notre article sur les meilleurs projets DevOps pour les débutants.

Il automatise l'orchestration et la gestion des conteneurs. Il est très populaire en raison de sa fonctionnalité. C'est un produit Google, et ses performances aident considérablement les organisations à automatiser la mise à l'échelle des conteneurs.

Composants de Kubernetes

Maintenant que vous savez ce qu'est Kubernetes et quelles sont ses fonctions, nous pouvons commencer à discuter de ses multiples composants. Vous ne pouvez comprendre la mise en réseau dans cet outil qu'après vous être familiarisé avec ses différentes parties. Il n'y a pas grand chose à craindre cependant. C'est parce que nous sommes là pour vous aider. Voici une brève description de ses différents composants. Bien que la description soit concise, elle devrait suffire à vous donner une idée générale.

Gousses

Vous souvenez-vous des atomes en chimie, les plus petits objets indépendants de la matière ? Eh bien, les pods sont les atomes de Kubernetes. Un pod est une charge de travail dans un cluster. Il peut contenir un ou plusieurs conteneurs avec stockage. Chaque pod possède une adresse IP unique qui lui sert d'identité lorsqu'il interagit avec d'autres composants de Kubernetes. Tous les conteneurs d'un pod sont planifiés et localisés au sein d'une même machine.

Contrôleurs

Les contrôleurs construisent le Kubernetes. Les contrôleurs surveillent l'état du serveur d'API pour s'assurer que son état actuel correspond à l'état que vous avez spécifié. Si l'état du serveur API change pour une raison quelconque, il réagit en conséquence. Les contrôleurs utilisent une boucle pour vérifier les états des clusters et pour les comparer aux états requis. Il peut également effectuer des tâches pour changer l'état actuel en l'état nécessaire.

Nœuds

Si les pods sont les atomes, les nœuds sont les engrenages de Kubernetes. Ils dirigent le cluster. Les machines virtuelles sont des nœuds accessibles dans les clusters Kubernetes. De nombreuses personnes ont tendance à utiliser le mot « hôte » au lieu de « nœud ». Nous avons essayé d'utiliser le terme nœuds de manière cohérente dans cet article.

Serveur API

Le serveur d'API est la passerelle vers le magasin de données dans Kubernetes. Il vous permet de spécifier l'état souhaité pour les clusters. Vous devrez effectuer des appels d'API si vous souhaitez modifier l'état de votre cluster Kubernetes et décrire l'état requis.

Comme vous connaissez les composants de la mise en réseau Kubernetes, nous pouvons commencer par son modèle de mise en réseau et son fonctionnement.

La mise en réseau Kubernetes expliquée

La mise en réseau Kubernetes suit un modèle spécifique qui présente les contraintes suivantes :

  • Les pods communiquent avec tous les autres pods sans traduction d'adresse réseau
  • Les nœuds peuvent communiquer avec les pods sans traduction d'adresse réseau
  • L'IP d'un Pod que les autres Pods voient est la même IP qu'il voit lui-même

En raison de ces contraintes, Kubernetes n'a que quelques sections de mise en réseau. Elles sont:

  • Transferts de conteneur à conteneur
  • Transferts de dosette à dosette
  • Transferts de pod à service
  • Transferts Internet vers service

Conteneur à conteneur

Vous pourriez penser qu'en réseau, une machine virtuelle interagit directement avec un périphérique Ethernet, mais il y a plus que cela.

Si vous utilisez Linux, l'espace de noms réseau vous fournira une pile réseau contenant ses périphériques réseau, ses routes et ses règles pour le pare-feu. Chaque processus en cours d'exécution sous Linux communiquerait avec cet espace de noms réseau.

Un pod possède un groupe de conteneurs au sein d'un espace de noms réseau. Ces conteneurs ont le même espace de port et la même adresse IP, qui leur sont attribués via l'espace de noms réseau. Ces conteneurs se trouvent via l'hôte local car ils sont situés dans le même espace de noms. Si vos applications se trouvent dans un pod, elles peuvent également accéder aux volumes partagés.

Pod à Pod

Les pods communiquent entre eux via leurs adresses IP. Chaque pod a une adresse IP réelle et distincte dans Kubernetes. Vous savez déjà ce que sont les Pods, nous n'avons donc pas besoin d'aborder ce sujet. Nous savons que Kubernetes utilise des adresses IP pour faciliter la communication entre les pods ; discutons de la façon dont il le fait.

Les pods communiquent via leurs nœuds. C'est pourquoi, pour comprendre la communication Pod à pod, vous devez comprendre l'interaction entre les nœuds.

  • Communication inter-nœuds
  • Communication intra-nœud

Nous allons discuter de chacun d'eux en détail:

Communication inter-nœuds

Lorsque les nœuds sont situés dans des pods différents, ils communiquent via cette méthode. Nous pouvons comprendre cette méthode de communication à travers un exemple simple. Supposons qu'il existe quatre réseaux de modules différents, à savoir le module 1, le module 2, le module 3, etc. Les pods 1 et 2 sont situés dans le réseau racine du nœud 1, et les pods 3 et 4 sont situés dans le 2e réseau.

Vous devez transférer un paquet du pod 1 au pod 4.

Le paquet doit d'abord quitter le réseau du pod 1 et entrer dans le réseau racine via veth0. Il passe par le pont Linux, ce qui l'aide à trouver sa destination. Comme le nœud n'a pas de goal au sein de son Pod, il est renvoyé à l'interface eth0. Maintenant, il quitte le premier nœud pour la table de routage. La table de routage achemine le paquet vers le nœud requis, qui est situé dans pod4. Le paquet atteint d'abord le nœud 2, puis il atteint le pont, qui le dirige vers sa destination.

Communication intra-nœud

La communication Intra Node a lieu lorsque les nœuds sont situés dans le même Pod. Nous pouvons expliquer la communication intra-nœud de la même manière que nous avons expliqué la communication inter-nœuds. Dans ces cas, le paquet voyage du premier pod à eth0. Il va dans le réseau racine via veth0. Ensuite, il doit passer sur le pont, après quoi il se rend à l'adresse IP désignée.

C'est ainsi que les pods communiquent entre eux dans Kubernetes. Passons à la section suivante.

Pod à service

Vous avez déjà vu dans la section précédente comment le trafic est acheminé entre les adresses IP des pods. Cependant, il y a un problème avec les adresses IP. Les IP des pods peuvent disparaître et réapparaître en fonction de la mise à l'échelle des conteneurs. Ainsi, si les conteneurs sont mis à l'échelle, le nombre d'adresses IP de pod augmentera et vice versa est également vrai.

Les services aident à la gestion de cette situation. Voici une brève explication de ce que sont les services dans Kubernetes, afin que vous n'ayez aucune confusion.

Que sont les services dans Kubernetes ?

Les services de Kubernetes configurent les proxys qui doivent transférer les requêtes vers un groupe de pods. Ces pods obtiennent du trafic et le sélecteur gère cette tâche. Après la création d'un service, celui-ci reçoit une adresse IP qui gère ses requêtes. Il existe plusieurs types de services, et nous devons en discuter avant de passer à Pod to service communication.

Il existe au total 4 types de services dans Kubernetes. Elles sont:

  • ClusterIP
  • NodePort
  • Équilibreur de charge
  • NomExterne

ClusterIP est le type de service par défaut. Dans ce type, le service est accessible uniquement dans le cluster. Dans NodePort, le service est exposé à l'IP de chaque nœud. Le NodePort achemine vers un service ClusterIP car le système l'a créé au préalable. Contrairement à ClusterIP, vous pouvez contacter ce service en dehors d'un cluster.

LoadBalancer utilise l'équilibreur de charge d'un cloud pour exposer le service aux réseaux externes. NodePort et ClusterIP sont automatiquement créés à cause de cela, et le service ExternalName le transfère car il reflète un enregistrement CNAME.

Maintenant que vous savez ce que sont les services et combien de types de services existent, discutons de la manière dont la communication entre les pods et les services se déroule.

Comment ça fonctionne?

Dans ce scénario, le paquet quitte le pod via eth0. Il va au pont via le périphérique Ethernet d'où il est transféré vers la route par défaut d'eth0. Cependant, il doit passer par iptables avant d'être accepté par eth0. Les iptables déterminent la destination du paquet en utilisant les règles spécifiées dont il dispose et envoient le paquet au pod requis. Une fois cela fait, le paquet va à l'adresse IP réelle d'un pod au lieu de l'adresse IP virtuelle du service.

Externe au service

Les trois méthodes précédentes de routage du trafic ne concernaient que Kubernetes. Mais dans des cas réels, il y a de fortes chances que vous deviez connecter votre réseau Kubernetes à un réseau tiers pour acheminer le trafic. Et cette section est à peu près la même.

Lorsqu'il est connecté à un réseau externe, Kubernetes peut remplir deux fonctions :

  • Acheminer le trafic d'Internet vers son réseau
  • Acheminer le trafic de son réseau vers Internet

Le premier nécessite un réseau Ingress, et le second nécessite un réseau Egress. Jetons un coup d'œil à eux.

Entrée

Acheminer votre trafic d'un réseau public vers votre système Kubernetes est très délicat. Il nécessite le LoadBalancer et le Controller pour gérer les paquets. Voici un exemple de la façon dont cela fonctionne.

Tout d'abord, vous allez déployer un service et votre fournisseur de cloud va créer un nouvel équilibreur de charge. L'équilibreur de charge répartira le trafic sur les machines virtuelles de votre cluster en utilisant le port désigné de votre service. Ici, iptables transfère le trafic qu'ils reçoivent de l'équilibreur de charge vers le pod requis. Le pod répondra au client avec son adresse IP, et conntrack aide à réécrire les adresses IP de la bonne manière.

Les équilibreurs de charge de couche 7 présents dans le réseau sont capables de segmenter le trafic entrant en fonction des URL et des chemins. Ceci est très utile lorsque vous travaillez avec un réseau Ingress.

Sortie

Lorsque vous acheminez le trafic d'un nœud de votre réseau Kubernetes vers Internet, cela dépend beaucoup de la configuration de votre réseau quant à la façon dont tout fonctionnerait. Nous allons discuter d'un exemple général ici pour toucher le sujet.

Le paquet commence à partir de l'espace de noms du pod et va à l'espace de noms racine via le veth. Ensuite, il se dirige vers le pont d'où il se rend au service par défaut car l'adresse IP à laquelle il doit se rendre n'est pas en connexion avec le pont. Il passe par iptables tout en allant à l'espace de noms racine.

Lire : Prérequis pour DevOps : ce n'est pas ce que vous pensez que c'est

Désormais, les passerelles Internet n'acceptent que les adresses IP qui sont en connexion avec des machines virtuelles. Et le pod source de notre pocket n'est pas connecté à une VM. Ainsi, les iptables font un NAT source et changent la source du paquet. Maintenant, il atteint la passerelle Internet où il passe par un autre NAT, puis entre dans l'Internet public (sa destination).

Et c'est tout. Vous savez maintenant tout sur la mise en réseau Kubernetes et ses différents composants.

Conclusion

Kubernetes est sans aucun doute l'un des outils essentiels que vous devriez apprendre si vous êtes intéressé par le réseautage. Ceux qui ne connaissent pas ce domaine ne savent pas à quel point il est vital. La gestion des conteneurs et le routage du trafic en fonction de ces exigences de trafic peuvent vous aider considérablement. Nous avons essayé de garder ce guide aussi clair que possible pour vous aider à tout comprendre.

Si vous souhaitez apprendre et maîtriser Kubernetes, DevOps, etc., consultez le programme Executive PG de IIIT-B & upGrad en développement logiciel - Spécialisation en développement Full Stack.

Préparez-vous à une carrière d'avenir

Postuler pour un Master of Science en informatique