Concepts réseau pour les conteneurs

Effectué

Les conteneurs sont des unités isolées de logiciels qui s’exécutent sur un noyau de système d’exploitation partagé. Un conteneur empaquette une application avec ses dépendances et l’abstrait du système d’exploitation hôte où elle s’exécute. Le résultat est un environnement d’exécution léger dans lequel les applications peuvent être exécutées et partagées facilement lors du développement.

Un conteneur est isolé du système d’exploitation hôte et des autres conteneurs. Des cartes réseau virtuelles attachées à des commutateurs virtuels permettent aux conteneurs de communiquer entre eux et avec des réseaux externes.

Runtime de conteneur : Docker

Dans ce module, nous examinons les options de mise en réseau pour les conteneurs Docker sur Windows. Docker est un ensemble d’outils open source, de solutions et de services cloud qui fournissent un modèle commun pour l’empaquetage (également appelé conteneurisation) du code d’application dans une unité standardisée appelée un conteneur Docker. Les conteneurs Docker offrent des fonctionnalités de sécurité permettant d’exécuter simultanément plusieurs conteneurs sur le même hôte sans s’affecter mutuellement.

Isolation des conteneurs avec des commutateurs virtuels

Les différents types de commutateurs virtuels fournissent différents niveaux d’isolation et de performances pour les conteneurs. Un commutateur virtuel interne n’est pas connecté directement à une carte réseau physique sur l’hôte du conteneur ; seul un commutateur virtuel externe est connecté directement.

NAT, Transparent et Superposition sont trois des types de commutateurs virtuels les plus courants.

  • Un conteneur avec un commutateur virtuel NAT utilise la traduction d’adresses réseau (NAT, Network Address Translation) pour accéder aux réseaux externes. Le commutateur virtuel NAT est facile à configurer, mais il limite la portabilité et la scalabilité de votre conteneur.
  • Un commutateur virtuel transparent permet à votre conteneur de se connecter directement au réseau physique. Ce commutateur virtuel offre des performances et une flexibilité élevées, mais vous devez configurer manuellement les adresses IP et les règles de routage.
  • Le commutateur virtuel de superposition crée une couche de réseau virtuel au-dessus du réseau physique. Vous bénéficiez d’une communication inter-hôtes et d’une segmentation réseau pour votre conteneur, mais il y a une augmentation de la charge de travail et de la complexité.

Gestion de conteneur

Les conteneurs sont généralement considérés comme des machines virtuelles, mais vous devez garder à l’esprit qu’ils n’en sont pas. Un conteneur n’a pas le même cycle de vie. Il est déployé, démarré, arrêté et détruit comme il se doit. Ce cycle de vie rend les conteneurs jetables, et affecte la façon dont les développeurs et les équipes d’exploitation informatique planifient la gestion des déploiements de conteneurs à grande échelle.

Plug-ins d’interface réseau de conteneur

Pour gérer l’allocation et la configuration des adresses IP et des cartes réseau virtuelles pour vos conteneurs, vous devez utiliser un plug-in d’interface réseau de conteneur (CNI, Container Network Interface). Un plug-in CNI est un composant logiciel qui implémente la spécification CNI, qui définit un moyen standard pour les orchestrateurs comme Kubernetes d’interagir avec des fournisseurs de réseau comme Azure.

Il existe différents plug-ins CNI disponibles pour les conteneurs Windows, comme :

  • Les plug-ins CNI WinNAT utilisent des commutateurs virtuels NAT pour la mise en réseau de conteneurs. WinNAT est le plug-in CNI par défaut pour Docker sur Windows.
  • Les plug-ins CNI WinCNI utilisent des commutateurs virtuels transparents pour la mise en réseau de conteneurs. WinCNI est compatible avec Kubernetes, mais nécessite une gestion manuelle des adresses IP.
  • Les plug-ins Azure CNI utilisent des commutateurs virtuels de superposition pour la mise en réseau de conteneurs. Azure CNI s’intègre à Réseau virtuel Azure et fournit des fonctionnalités avancées comme les stratégies réseau, la découverte de services et l’équilibrage de charge.

Conteneurs et microservices

Une application de microservices est une approche d’architecture native Cloud, où une même application est constituée de nombreux composants ou services faiblement couplés et déployables indépendamment. Chaque composant ou service peut être représenté par un conteneur.

Les conteneurs n’implémentent pas nécessairement une architecture de microservices. Ils peuvent héberger une application monolithique, mais ils ne sont pas conçus dans cet objectif. Par défaut, le runtime de conteneurs (comme Docker) et l’orchestrateur de conteneurs supposent qu’un conteneur peut toujours être supprimé ou retiré sans problème, et qu’un autre conteneur peut prendre sa place en cas de besoin.

Conteneurs, Kubernetes et mise en réseau

Le processus de déploiement, de mise à jour, de supervision et de suppression de conteneurs présente de nombreux défis. Dans ce module, nous examinons les solutions de gestion des conteneurs pour la mise en réseau des conteneurs Windows avec Kubernetes et Azure Kubernetes Service (AKS). Ces options prennent en charge l’utilisation de plug-ins CNI pour la mise en réseau de conteneurs.