Kubernetes : guide pratique pour les débutants

Kubernetes est une plateforme open-source d'orchestration de conteneurs qui automatisent le déploiement, la mise à l'échelle et la gestion des applications contaneurisées.

Concepts essentiels

  • Pod : unité de déploiement minimale, capable d'héberger plusieurs conteneurs.
  • Déploiement : supervise le nombre de répliques de Pods et les mises à jour.
  • Service : établit une stratégie d'accès pour un groupe de Pods, avec une adresse stable.
  • ConfigMap & Secret : stockage pour les configurations et les données sensibles.
  • Espace de noms : subdivision logique pour isoler les ressources.

Préparation de l'environnement

# Télécharger kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

# Installer Minikube pour un cluster local
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube

# Lancer le cluster
minikube start

Déployer une application initiale

Créer un déploiement

# fichier app-deploiement.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app-deploiement
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: serveur-app
        image: httpd:2.4
        ports:
        - containerPort: 80

Définir un service

# fichier web-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: web-service
spec:
  selector:
    app: web
  ports:
  - port: 80
    targetPort: 80
  type: NodePort

Appliquer les configurations

kubectl apply -f app-deploiement.yaml
kubectl apply -f web-service.yaml

# Observer les états
kubectl get pods
kubectl get services
kubectl get deployments

Commandes courantes

# Afficher les ressources
kubectl get pods -n default
kubectl get deployments
kubectl get services

# Examiner les détails
kubectl describe pod <nom-pod>
kubectl logs <nom-pod>

# Se connecter au conteneur
kubectl exec -it <nom-pod> -- /bin/bash

# Modifier le nombre de répliques
kubectl scale deployment web-app-deploiement --replicas=3

# Retirer des ressources
kubectl delete -f app-deploiement.yaml
kubectl delete pod <nom-pod>

Gestion des configurations

# Créer une ConfigMap
kubectl create configmap config-app --from-literal=cle1=valeur1

# Générer un Secret
kubectl create secret generic secret-bdd --from-literal=motdepasse=secret456

# Intégrer dans un Pod
env:
  - name: MOT_DE_PASSE_BDD
    valueFrom:
      secretKeyRef:
        name: secret-bdd
        key: motdepasse

Défis fréquents

Q : Pourquoi un Pod reste-t-il en état Pending ?
R : Vérifiez la disponibliité des ressources sur les nœuds ou les paramètres de taints et tolérations.

Q : Comment résoudre une erreur ImagePullBackOff ?
R : L'image spécifiée est introuvable ou les droits d'accès sont insuffisants. Contrôlez le nom de l'image et les configurations imagePullSecrets.

Étiquettes: kubernetes Container Orchestration Pods Deployments Services

Publié le 17 juin à 22h36