Kubernetes ne garantit pas que tout ce qui se trouve en dehors d'un cluster peut communiquer avec lui et ne garantit que les fonctionnalités suivantes :
Tous les pods d'un cluster peuvent communiquer directement entre eux sans avoir à utiliser la traduction d'adresses réseau (NAT). Même les pods qui se trouvent sur des nœuds différents peuvent communiquer directement entre eux.
Les agents sur un nœud (des daemons système ou un kubelet par exemple) peuvent communiquer avec tous les pods de ce nœud.
Ainsi, lorsqu'un réseau héberge deux clusters, comme illustré ci-dessous, une question est de savoir comment les pods du cluster 1 communiquent avec les pods du cluster 2 ? De même, comment les clients ou les serveurs situés en dehors des clusters (marqués comme "Autre client" et "Autre serveur" dans le schéma) communiquent-ils avec un pod à l'intérieur d'un cluster ?
Ce document explique comment un modèle de réseau en mode plat et un modèle de réseau en mode île répondent différemment à ces questions.
Modèle de réseau en mode plat
Dans un réseau entièrement intégré ou en mode plat, les pods disposent d'adresses IP uniques sur tous les clusters. Par exemple, Pod-A
du cluster 1 possède une adresse IP que vous ne trouverez nulle part ailleurs dans le cluster 1 ou le cluster 2. De même, Pod-G
dans le cluster 2 possède une adresse unique sur les deux clusters. Cela signifie qu'en l'absence de pare-feu ou d'autres règles pouvant bloquer le trafic, les pods du cluster 1 peuvent communiquer directement avec l'un des pods du cluster 2, sans passerelle ni traduction.
De même, les clients et les serveurs extérieurs à un cluster peuvent communiquer directement avec un pod à l'intérieur d'un cluster via l'adresse IP unique du pod si le routage est configuré statiquement dans les appareils réseau ou si le protocole BGP (Border Gateway Protocol) est utilisé par les nœuds pour annoncer qu'ils peuvent gérer le trafic pour une plage d'adresses IP donnée, par exemple.
Ainsi, dans les réseaux plats, la communication est simple et directe : il n'y a pas d'adresses IP qui se chevauchent et vous n'avez pas besoin d'utiliser de réseaux superposés ou NAT.
Modèle de réseau en mode île
Un modèle de réseau en mode plat est une option si vous avez le luxe d'un grand espace d'adressage IP, et que vous pouvez vous permettre d'attribuer une adresse IP unique à chaque pod. Toutefois, si vous n'avez pas la possibilité d'utiliser un grand espace d'adressage IP, un modèle de réseau en mode île est un bon choix.
Dans un réseau en mode île, les nœuds ont des adresses IP uniques mais les pods n'ont pas d'adresses uniques dans les clusters pour économiser l'espace d'adressage. Cela ne pose pas de problème, car les pods d'un cluster ne communiquent jamais directement avec les pods d'un autre cluster. Au lieu de cela, comme le montre le schéma suivant, des passerelles jouent un rôle de médiation entre les pods de différents clusters.
De même, le trafic (entrée) d'un client qui entre dans un cluster et le trafic (sortie) qui sort d'un cluster sont gérés par des passerelles similaires. Les passerelles peuvent être mises en œuvre de différentes manières. Par exemple, le NAT, les adresses IP virtuelles et les proxys sont des exemples de passerelles. Ils effectuent des traductions d'adresses IP qui ont pour effet de préserver la confidentialité des adresses IP des pods.
Dans le modèle de réseau en mode île, les mêmes adresses IP de pod peuvent être utilisées dans chaque cluster. Elles ne doivent pas nécessairement être uniques dans tous les clusters. Comme le diagramme suivant le suggère, vous pouvez utiliser les mêmes adresses IP de pod dans chaque cluster, car un pod d'un cluster ne communique jamais directement avec un pod d'un autre cluster.
L'un des principaux avantages du modèle de réseau en mode île est que les adresses IP des pods peuvent être réutilisées.
Avantages et inconvénients des deux modèles
Voici quelques-uns des avantages et inconvénients des deux modèles :
Un réseau plat est plus rapide qu'un réseau d'îles, car les passerelles en mode île effectuent des traductions d'adresse qui ont un coût de performances.
Le débogage des problèmes de cluster est plus facile dans les réseaux plats car tout le réseau possède une adresse IP unique. Il est donc plus facile de déterminer l'emplacement du problème. Par exemple, les adresses IP des pods ne sont pas masquées derrière l'adresse IP d'un nœud, ce qui permet de déterminer plus facilement quel pod est à l'origine des problèmes. De même, les adresses IP clientes ne sont pas masquées en mode plat comme en mode île, ce qui facilite également le débogage.
Vous ne pourrez peut-être pas utiliser le modèle de réseau plat si vous avez peu d'adresses IP ou si votre espace IP est fragmenté (c'est-à-dire si vous n'avez pas de grandes plages d'adresses IP). Dans ce cas, un réseau en mode île est une meilleure option.
Il est important de noter que les modèles de réseau plat et en îles ne sont que deux des modèles réseau possibles, et qu'il existe de nombreuses variantes au sein même de ces modèles.