Formation DevOps | Formation kubernetes​ : Pods

www.itgalaxy.io

Pods dans Kubernetes

Les pods sont les plus petites entités manipulables dans Kubernetes. Ils représentent une couche d’abstraction pour gérer des ensembles de conteneurs fonctionnant ensemble sur un même hôte et partageant des ressources, comme le réseau et le stockage.

Caractéristiques des Pods

  • Entité composée de conteneurs : Un pod peut contenir un ou plusieurs conteneurs qui ont un lien étroit entre eux, souvent dans une relation de complémentarité. Par exemple, un conteneur principal pourrait exécuter l’application tandis qu’un conteneur secondaire pourrait fournir des services auxiliaires tels que la mise en cache ou le logging.

  • Démarrés sur la même machine : Les conteneurs d’un même pod sont toujours exécutés sur le même hôte, ce qui leur permet de partager des ressources de manière optimale.

  • Partage des namespaces : Les conteneurs au sein d’un pod partagent le même namespace réseau et peuvent également partager des points de montage. Cela signifie qu’ils peuvent communiquer entre eux via localhost et accéder aux mêmes volumes de stockage.

  • Cycle de vie immuable : Une fois qu’un pod est créé, on ne peut pas augmenter ou diminuer le nombre de conteneurs qu’il contient. Si une modification est nécessaire, un nouveau pod doit être créé.

Utilisation de Kubectl pour la Gestion des Pods

Lancer un Pod

Pour lancer un pod simple contenant un conteneur avec l’image nginx, vous pouvez utiliser la commande suivante :

kubectl run nginx --image=nginx

Après avoir exécuté cette commande, vous pouvez vérifier l’état de vos pods en utilisant :

kubectl get pods







Liste des Pods
Obtenir des Détails sur un Pod

Pour obtenir des informations détaillées sur un pod spécifique, utilisez la commande :

kubectl describe pod nginx


































Cette commande vous fournit des informations essentielles, notamment :

L’état du pod (par exemple, Running, Error, ou Evicted).
La section « Events », qui présente les événements associés au pod, utile pour le débogage.
Des informations détaillées sur les volumes persistants, les PVC, les ConfigMaps, les side-cars, etc.

Détails du Pod

Afficher les Logs d’un Pod

Pour afficher les logs d’un pod spécifique et suivre la sortie en temps réel, vous pouvez utiliser :

kubectl logs -f nginx


Logs du Pod

Exécuter des Commandes dans un Pod

Il est également possible d’exécuter des commands à l’intérieur d’un pod. Par exemple, pour imprimer “Hello World” :

kubectl exec nginx -- echo "Hello World"






Exécution de commande dans un pod

Pour ouvrir un shell interactif dans le pod, utilisez :

kubectl exec -it nginx -- /bin/bash







documentation kubectl

Pour plus d’informations sur les commandes, consultez la documentation officielle de Kubectl.
Création de Pods à l’Aide de Fichiers YAML

Bien que l’utilisation de kubectl run soit rapide, il est généralement recommandé de définir les pods à l’aide de fichiers YAML. Cela permet de gérer et de versionner plus facilement les configurations.

Voici un exemple de définition d’un pod dans un fichier YAML :

apiVersion: v1
kind: Pod
metadata:
  name: nginx-yaml
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - containerPort: 80
          protocol: TCP

Explication des Champs

apiVersion : La version de l’API Kubernetes à utiliser pour cet objet.
kind : Type d’objet, ici un pod.
metadata : Contient les métadonnées telles que le nom du pod et les labels.
name : Nom du pod.
labels : Étiquettes importantes utilisées pour sélectionner les pods.
spec : Spécifications des conteneurs, y compris les ports exposés et l’image à utiliser.

Appliquer la Définition de Pod

Après avoir créé le fichier YAML, vous pouvez l’appliquer avec :

kubectl apply -f deploy.yaml

Application du fichier YAML

Tester le Pod

Pour s’assurer que le pod fonctionne comme prévu, exposez-le à l’aide d’un service :

kubectl expose pod nginx --type=NodePort --port=80

Cela exposera le port 80 du pod sur un port de nœud. N’oubliez pas d’ajouter ce port à votre groupe de sécurité inbound.

Pour voir les services actifs, utilisez :

kubectl get svc

Et pour obtenir des détails sur le service :

kubectl describe svc nginx

Dans cet exemple, le port d’exposition est 30149.

Accéder au Pod

Pour tester le pod exposé, récupérez l’adresse IP publique d’un nœud sur lequel le service est en écoute. Dans notre cas, cela pourrait être 3.250.87.23.

Dans notre cas le port d’exposition est 30149















Pour tester faut récupérer une adresse publique 3.250.87.23 d’un node dans mon cas c’est est utilisé le nodeport :

En utilisant cette adresse IP et le port, vous pourrez accéder au service exécuté dans le pod.

Conclusion

Les pods sont des unités de déploiement essentielles dans Kubernetes, facilitant la gestion des conteneurs. Grâce à kubectl, vous pouvez facilement créer, superviser, dépanner et interagir avec vos pods de manière efficace. En utilisant des définitions YAML, vous obtenez une meilleure organisation et une gestion plus simple de votre infrastructure, permettant des déploiements reproductibles. Que vous travailliez sur des environnements de développement ou de production, la compréhension et la manipulation efficaces des pods sont cruciales pour tirer le meilleur parti de Kubernetes.





1. Nous contactez


2. Infra as a Service

  • Description: Infrastructure cloud évolutive et sécurisée
  • Links:

3. Projets Développeurs


4. Développeurs


5. Formations Complètes


6. Marketplace

7. Blogs


This website is powered by ItGalaxy.io