Aller au contenu principal

Chapitre 1.5 - Concepts Fondamentaux

Objectifs d'Apprentissage

À la fin de ce chapitre, vous serez capable de:

  • Comprendre ce qu'est un Pod
  • Expliquer le rôle d'un Deployment
  • Comprendre les Services et leurs types
  • Utiliser les Namespaces pour l'organisation

Introduction

Kubernetes utilise plusieurs concepts fondamentaux que vous utiliserez constamment. Ce chapitre présente les plus importants: Pods, Deployments, Services et Namespaces.


Pods: L'Unité Atomique

Définition

Un Pod est la plus petite unité déployable dans Kubernetes.

Caractéristiques d'un Pod

Points clés:

  • Un Pod = 1 ou plusieurs conteneurs
  • Conteneurs dans un Pod partagent:
    • L'adresse IP
    • Les volumes
    • L'espace de noms réseau
  • Les Pods sont éphémères (peuvent être recréés)

Exemple de Pod

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80

Deployments: Gestion du Cycle de Vie

Définition

Un Deployment décrit l'état désiré de votre application.

Fonctionnalités d'un Deployment

Avantages:

  • Gère les réplicas automatiquement
  • Rolling updates (sans interruption)
  • Rollback en cas de problème
  • Auto-guérison

Exemple de Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80

Services: Exposition des Applications

Définition

Un Service expose un ensemble de Pods comme un service réseau stable.

Problème résolu:

  • Les Pods ont des IPs éphémères
  • Les Pods peuvent être recréés
  • Comment maintenir une adresse stable?

Solution: Le Service fournit une IP stable et un nom DNS

Types de Services

1. ClusterIP (Par défaut)

  • Service interne au cluster
  • Accessible uniquement depuis le cluster
  • Utilise le DNS interne

2. NodePort

  • Expose sur un port (30000-32767) de chaque node
  • Accessible depuis l'extérieur
  • Port unique sur tous les nodes

3. LoadBalancer

  • Expose via un load balancer cloud
  • IP publique automatique
  • Disponible sur AWS, Azure, GCP

Exemple de Service

apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080

Namespaces: Isolation Logique

Définition

Les Namespaces permettent de diviser un cluster en plusieurs environnements virtuels.

Avantages des Namespaces

Cas d'usage:

  • Séparer dev/staging/prod
  • Isoler les équipes
  • Gérer les quotas de ressources
  • Appliquer des politiques de sécurité

Namespaces par Défaut

Kubernetes crée plusieurs namespaces par défaut:

  • default: Namespace par défaut pour vos ressources
  • kube-system: Composants système Kubernetes
  • kube-public: Ressources publiques
  • kube-node-lease: Heartbeats des nodes

Exemple d'Utilisation

# Créer un namespace
kubectl create namespace production

# Déployer dans un namespace
kubectl apply -f deployment.yaml -n production

# Lister les pods dans un namespace
kubectl get pods -n production

Relations Entre les Concepts

Vue d'Ensemble

Hiérarchie:

  1. Namespace: Contient tout
  2. Deployment: Gère les Pods
  3. ReplicaSet: Maintient le nombre de réplicas
  4. Pods: Exécutent les conteneurs
  5. Service: Expose les Pods

Résumé du Chapitre

Dans ce chapitre, vous avez appris:

Pod: Plus petite unité déployable, 1+ conteneurs
Deployment: Gère le cycle de vie, réplicas, updates
Service: Expose les Pods avec une IP stable
Types de Services: ClusterIP, NodePort, LoadBalancer
Namespaces: Isolation logique, organisation
Relations: Namespace → Deployment → Pods → Service


Prochaines Étapes

Maintenant que vous maîtrisez les concepts fondamentaux:

Lab 1.1: Premier Déploiement (mise en pratique)
Quiz Module 1: Valider vos connaissances


Chapitre créé le: Décembre 2024