Skip to content

Presentation

Table des Matières

  1. Introduction à Kubernetes
  2. Concepts Clés
  3. Prérequis
  4. Installation
  5. Usage Basique

Introduction à Kubernetes

Pourquoi Kubernetes ?

Kubernetes est une plateforme open-source qui automatise : - Le déploiement d'applications conteneurisées - La mise à l'échelle (scaling) - La gestion des applications distribuées

Avantages principaux : - Haute disponibilité - Scalabilité automatique - Gestion simplifiée des applications complexes

Objectifs de cette documentation

  • Comprendre les concepts fondamentaux
  • Installer un cluster Kubernetes
  • Déployer et gérer des applications
  • Pratiquer avec des exercices concrets

Concepts Clés

Architecture du Cluster

  • Nœud Maître (Master) : Orchestre le cluster (API Server, Scheduler, Controller Manager)
  • Nœuds Travailleurs (Workers) : Exécutent les applications (kubelet, kube-proxy)

Composants Principaux

Composant Description
Pod Plus petite unité exécutable (1+ conteneurs)
Deployment Gère le cycle de vie des applications
Service Point d'accès réseau stable aux Pods
ConfigMap/Secret Gestion de configuration et données sensibles
Ingress Routeur HTTP pour accès externe
PersistentVolume Stockage persistant pour les données

Schéma Kubernetes


Prérequis

Configuration Matérielle

Rôle CPU RAM Stockage
Master 2 cœurs 2GB 20GB
Worker 1 cœur/Pod 1GB/Pod Variable

Configuration Logicielle

  • Runtime conteneur (Docker, containerd)
  • Kubernetes v1.25+
  • Swap désactivé (sudo swapoff -a)

Configuration Réseau

  • Ports ouverts : 6443 (API), 10250 (kubelet)
  • Connectivité entre tous les nœuds

Installation

Étapes d'Installation avec kubeadm

  1. Préparation du système :

    sudo apt update && sudo apt upgrade -y
    

  2. Installation des dépendances :

    sudo apt install -y apt-transport-https curl gnupg
    

  3. Ajout du dépôt Kubernetes :

    curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
    echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
    

  4. Installation des composants :

    sudo apt update
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl
    

  5. Initialisation du cluster :

    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    

  6. Configuration du réseau :

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

  7. Ajout des workers :

    kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
    


Usage Basique

Commandes Essentielles

Commande Description
kubectl apply -f fichier.yaml Déploie une ressource
kubectl get pods Liste les Pods
kubectl describe pod <nom> Affiche les détails d'un Pod
kubectl logs <pod> Affiche les logs
kubectl exec -it <pod> -- bash Ouvre un shell dans un Pod

Exemple de Déploiement

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:latest
        ports:
        - containerPort: 80

Bonnes Pratiques

  • Un conteneur par Pod en général
  • Utiliser des labels cohérents
  • Configurer des probes (liveness/readiness)
  • Gérer les secrets avec l'objet Secret