Comment créer des Pods multi-conteneurs dans Kubernetes

Les pods ont généralement un seul conteneur, c’est-à-dire que les pods à conteneur unique sont le cas d’utilisation le plus courant et il n’est pas nécessaire d’avoir un conteneur unique dans le pod. Il existe certains cas d’utilisation où un pod unique peut contenir plusieurs conteneurs. Les pods multi-conteneurs sont les pods qui contiennent deux ou plusieurs conteneurs apparentés qui partagent des ressources comme l’espace réseau, les volumes partagés, etc. et travaillent ensemble comme une seule unité.

L’une des raisons d’utiliser un pod à plusieurs conteneurs est la communication plus simple entre les conteneurs. Tous les conteneurs à l’intérieur du pod partagent le même espace réseau pour communiquer via lelocalhost. Une autre raison d’utiliser un pod multi-conteneurs est que tous les conteneurs ont le même cycle de vie qui doit s’exécuter sur le même nœud. Lorsqu’il est nécessaire que tous les conteneurs aient le même volume monté afin qu’ils puissent communiquer entre eux en lisant et en modifiant les fichiers du volume de stockage, on peut utiliser des pods à conteneurs multiples.

Dans cet article, nous allons créer un pod avec 2 conteneurs à l’intérieur. Cet exemple aidera à comprendre la création d’un pod avec plusieurs conteneurs.

Pré-requis

  1. Cluster Kubernetes avec au moins 1 nœud de travail.
    Si tu veux apprendre à créer un cluster Kubernetes, cliqueici. Ce guide t’aidera à créer un cluster Kubernetes avec 1 Maître et 2 Nœuds sur des Instances EC2 AWS Ubuntu 18.04.

Que ferons-nous ?

  1. Créer un Pod multi-container

Créer un Pod multi-conteneur

Crée un fichier de définition de port multi-conteneurs en utilisant le contenu suivant.

vim multi-container-pod-example.yml
apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  containers:
  - name: container-1
    image: nginx
    ports:
    - containerPort: 80  
- name: container-2 image: alpine command: ["watch", "wget", "-qO-", "localhost"]

multi-container-pod-définition

Ce fichier contient une définition pour 2 conteneurs qui partageront le même réseau, les mêmes ressources et le même volume.

Obtiens une liste des ports existants et crée un port multi-conteneurs à l’aide des commandes suivantes.

kubectl get pods #Get a list of existing pods
kubectl create -f multi-container-pod-example.yml #Create a multi container pod
kubectl get pods #Check the pods after creating in the above step

create-multi-container-pod

Dans la capture d’écran ci-dessus, tu peux voir qu’il y a 2/2 pods avec l’état READY. Cela signifie qu’il y a 2 pods et que sur ces 2 pods, 2 pods sont en cours d’exécution.

Récupère la liste des pods et décris celui que nous venons de créer.

kubectl get pods
kubectl describe pod multi-container-pod #Get details of the Pod.

describe-pod-to-see-detail

Lorsque tu décris le pod, tu obtiendras les détails des deux conteneurs qu’il contient.

Dans la capture d’écran ci-dessus, tu peux voir qu’il y a deux conteneurs, container-1 et container-2. Ces deux conteneurs appartiennent au même pod.

Maintenant, pour vérifier les journaux d’un conteneur particulier, tu peux ajouter le nom du conteneur à la commande que nous utilisons pour obtenir les journaux du pod.

kubectl get pods
kubectl logs multi-container-pod #This does not work
kubectl logs multi-container-pod container-1 #Specify the container name to get the logs

Vérifier les journaux du conteneur à l'intérieur du pod

Dans la capture d’écran ci-dessus, tu peux voir que si le nom du conteneur n’est pas donné à la commande, tu obtiens une erreur dans laquelle on te demande de spécifier le nom du conteneur dans la commande.

Tu peux spécifier le nom d’un seul conteneur et non celui de plusieurs conteneurs dans la commande pour récupérer les journaux.

kubectl get pods
kubectl logs multi-container-pod #
kubectl logs multi-container-pod container-1 container-2 #Two containers can not be specified

check-logs-of-one-container-at-a-time

Dans la capture d’écran ci-dessus, tu peux voir que lorsque tu spécifies 2 conteneurs pour récupérer les journaux, la commande échoue.

La commande simple pour se connecter au pod ne fonctionne pas lorsqu’il y a plusieurs conteneurs dans un seul pod.

kubectl get pods
kubectl exec -it multi-container-pod /bin/bash

Essayer de se connecter au pod

Pour se connecter à un conteneur particulier, nous devons spécifier le nom du conteneur dans la commande. De plus, tu ne peux pas te connecter à 2 pods en même temps.

kubectl get pods
kubectl exec -it multi-container-pod -c container-1 /bin/bash #Login into the container

Connexion à l'intérieur du conteneur à l'intérieur du pod

Lorsque tu n’as plus besoin de ton pod, tu peux le supprimer à l’aide de la commande suivante.

kubectl get pod
kubectl delete pod multi-container-pod #Delete the pod

supprimer-le-pod

Conclusion

Dans cet article, nous avons appris comment créer un pod à plusieurs conteneurs. Nous avons également vu comment récupérer les journaux d’un conteneur particulier et se connecter à un seul conteneur. Un pod multi-conteneur nous aide à avoir des conteneurs dépendants dans le même pod.

Vous aimerez aussi...