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