Aller au contenu principal

Chapitre 1.6 - Installation et Configuration

Vue d'Ensemble​

Avant de commencer à utiliser Kubernetes, vous devez installer les outils nécessaires. Ce chapitre vous guide à travers l'installation de kubectl (l'outil en ligne de commande de Kubernetes) et la configuration d'un cluster local pour la pratique.

Objectifs​

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

  • Installer kubectl sur votre système
  • Comprendre la configuration de kubectl
  • Démarrer un cluster Kubernetes local
  • Vérifier que tout fonctionne correctement
  • Utiliser les commandes kubectl de base

Qu'est-ce que kubectl?​

kubectl (prononcé "kube-control" ou "kube-cuttle") est l'outil en ligne de commande officiel pour interagir avec un cluster Kubernetes.

Fonctionnalités de kubectl:

  • Créer, modifier, supprimer des ressources
  • Inspecter l'état du cluster
  • Gérer les déploiements
  • Déboguer les applications
  • Accéder aux logs des pods

Installation de kubectl​

Vérification de l'Installation​

Avant d'installer, vérifions si kubectl est déjà installé:

kubectl version --client

Si vous voyez une version, kubectl est déjà installé! Sinon, suivez les instructions ci-dessous.

Installation sur Windows​

Méthode 1: Via Chocolatey (Recommandé)​

Si vous avez Chocolatey installé:

choco install kubernetes-cli

Méthode 2: Téléchargement Direct​

  1. Téléchargez la dernière version depuis:

    https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe

    (Remplacez v1.28.0 par la version désirée)

  2. Ajoutez kubectl.exe à votre PATH:

    • Créez un dossier C:\kubectl
    • Placez kubectl.exe dans ce dossier
    • Ajoutez C:\kubectl à votre variable d'environnement PATH
  3. Vérifiez l'installation:

    kubectl version --client

Méthode 3: Via PowerShell​

# Télécharger kubectl
$version = "v1.28.0"
$url = "https://dl.k8s.io/release/$version/bin/windows/amd64/kubectl.exe"
Invoke-WebRequest -Uri $url -OutFile "$env:TEMP\kubectl.exe"

# Déplacer vers un dossier dans le PATH
Move-Item -Path "$env:TEMP\kubectl.exe" -Destination "C:\Windows\System32\kubectl.exe"

# Vérifier
kubectl version --client

Installation sur Linux​

Méthode 1: Via Package Manager (Ubuntu/Debian)​

# Mettre à jour les packages
sudo apt-get update

# Installer les dépendances
sudo apt-get install -y apt-transport-https ca-certificates curl

# Ajouter la clé GPG de Kubernetes
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

# Ajouter le repository
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

# Installer kubectl
sudo apt-get update
sudo apt-get install -y kubectl

# Vérifier
kubectl version --client

Méthode 2: Téléchargement Direct​

# Télécharger la dernière version
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

# Rendre exécutable
chmod +x kubectl

# Déplacer vers un dossier dans le PATH
sudo mv kubectl /usr/local/bin/

# Vérifier
kubectl version --client

Installation sur macOS​

Méthode 1: Via Homebrew (Recommandé)​

brew install kubectl

Méthode 2: Téléchargement Direct​

# Télécharger
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"

# Rendre exécutable
chmod +x kubectl

# Déplacer vers un dossier dans le PATH
sudo mv kubectl /usr/local/bin/

# Vérifier
kubectl version --client

Configuration de kubectl​

Fichier de Configuration​

kubectl utilise un fichier de configuration situé à:

  • Linux/macOS: ~/.kube/config
  • Windows: %USERPROFILE%\.kube\config

Ce fichier contient:

  • Les informations de connexion aux clusters
  • Les contextes (quel cluster utiliser)
  • Les utilisateurs et authentifications

Structure du Fichier config​

apiVersion: v1
kind: Config
clusters:
- name: my-cluster
cluster:
server: https://api.my-cluster.com
certificate-authority-data: <cert-data>
contexts:
- name: my-context
context:
cluster: my-cluster
user: my-user
current-context: my-context
users:
- name: my-user
user:
token: <token>

Commandes de Configuration Utiles​

# Voir la configuration actuelle
kubectl config view

# Voir les contextes disponibles
kubectl config get-contexts

# Changer de contexte
kubectl config use-context my-context

# Voir le contexte actuel
kubectl config current-context

Cluster Local: minikube​

Pour pratiquer Kubernetes localement, nous utiliserons minikube, qui crée un cluster Kubernetes à un seul node dans une machine virtuelle.

Installation de minikube​

Windows​

# Via Chocolatey
choco install minikube

# Ou téléchargement direct
# Téléchargez depuis: https://github.com/kubernetes/minikube/releases

Linux​

# Télécharger
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

# Installer
sudo install minikube-linux-amd64 /usr/local/bin/minikube

macOS​

brew install minikube

Démarrage de minikube​

# Démarrer minikube
minikube start

# Vérifier le statut
minikube status

# Voir les informations du cluster
kubectl cluster-info

Commandes minikube Utiles​

# Arrêter le cluster
minikube stop

# Démarrer le cluster
minikube start

# Supprimer le cluster
minikube delete

# Ouvrir le dashboard Kubernetes
minikube dashboard

# Accéder à l'environnement minikube
minikube ssh

Cluster Local: kind (Alternative)​

kind (Kubernetes in Docker) est une alternative à minikube qui utilise Docker au lieu d'une VM.

Installation de kind​

Windows​

choco install kind

Linux/macOS​

# Télécharger
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
# Pour macOS: kind-darwin-amd64

# Rendre exécutable
chmod +x ./kind

# Déplacer vers PATH
sudo mv ./kind /usr/local/bin/kind

Utilisation de kind​

# Créer un cluster
kind create cluster --name my-cluster

# Lister les clusters
kind get clusters

# Supprimer un cluster
kind delete cluster --name my-cluster

Vérification de l'Installation​

Test Complet​

Exécutez ces commandes pour vérifier que tout fonctionne:

# 1. Vérifier la version de kubectl
kubectl version --client

# 2. Vérifier la connexion au cluster
kubectl cluster-info

# 3. Lister les nodes
kubectl get nodes

# 4. Lister tous les pods (devrait être vide au début)
kubectl get pods --all-namespaces

# 5. Vérifier les composants système
kubectl get componentstatuses
# Note: Cette commande est dépréciée dans les versions récentes

Résultat Attendu​

Si tout fonctionne, vous devriez voir:

$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 1m v1.28.0

Commandes kubectl de Base​

Voici les commandes essentielles que vous utiliserez tout au long du cours:

Commandes Générales​

# Obtenir des informations
kubectl get <resource> # Lister des ressources
kubectl describe <resource> <name> # Détails d'une ressource
kubectl explain <resource> # Documentation d'une ressource

# Créer des ressources
kubectl create <resource> # Créer depuis la ligne de commande
kubectl apply -f <file.yaml> # Créer depuis un fichier YAML

# Modifier des ressources
kubectl edit <resource> <name> # Éditer une ressource
kubectl patch <resource> <name> # Modifier partiellement

# Supprimer des ressources
kubectl delete <resource> <name> # Supprimer une ressource
kubectl delete -f <file.yaml> # Supprimer depuis un fichier

Exemples Pratiques​

# Lister tous les pods
kubectl get pods

# Lister tous les pods dans tous les namespaces
kubectl get pods --all-namespaces

# Voir les détails d'un pod
kubectl describe pod my-pod

# Voir les logs d'un pod
kubectl logs my-pod

# Exécuter une commande dans un pod
kubectl exec -it my-pod -- /bin/bash

# Copier un fichier vers/depuis un pod
kubectl cp my-pod:/path/file ./local-file

Autocomplétion (Bonus)​

Configuration de l'Autocomplétion​

L'autocomplétion rend kubectl beaucoup plus facile à utiliser:

Bash (Linux/macOS)​

# Ajouter à ~/.bashrc
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc

Zsh (macOS)​

# Ajouter à ~/.zshrc
echo 'source <(kubectl completion zsh)' >> ~/.zshrc
source ~/.zshrc

PowerShell (Windows)​

# Installer le module
Install-Module -Name PSKubectlCompletion

# Importer dans le profil
Add-Content $PROFILE "Import-Module PSKubectlCompletion"

Résumé​

Dans ce chapitre, vous avez appris:

Comment installer kubectl sur différents systèmes
Comment configurer kubectl pour se connecter à un cluster
Comment démarrer un cluster local avec minikube ou kind
Comment vérifier que tout fonctionne correctement
Les commandes kubectl de base essentielles


Prochaines Étapes​

Maintenant que vous avez kubectl installé et un cluster local fonctionnel, vous êtes prêt pour:

Lab 1.1: Premier déploiement sur Kubernetes
Module 2: Architecture détaillée et composants Kubernetes


Ressources​


Troubleshooting​

Problèmes Courants et Solutions​

Problème 1: kubectl: command not found​

Symptôme:

kubectl: command not found

Solutions:

  1. Vérifier l'installation:

    # Windows
    where kubectl

    # Linux/macOS
    which kubectl
  2. Vérifier le PATH:

    • Assurez-vous que le dossier contenant kubectl est dans votre PATH
    • Windows: Vérifiez les variables d'environnement système
    • Linux/macOS: Vérifiez echo $PATH
  3. Réinstaller:

    • Suivez à nouveau les instructions d'installation pour votre OS

Problème 2: Unable to connect to the server​

Symptôme:

The connection to the server <server> was refused

Solutions:

  1. Vérifier que le cluster est démarré:

    # Pour minikube
    minikube status
    minikube start

    # Pour kind
    kind get clusters
  2. Vérifier la configuration:

    kubectl config view
    kubectl config current-context
  3. Vérifier la connexion réseau:

    kubectl cluster-info

Problème 3: minikube start échoue​

Symptômes possibles:

  • Erreur de virtualisation
  • Problème de ressources (RAM/CPU)
  • Conflit avec Docker

Solutions:

  1. Vérifier la virtualisation:

    • Windows: Activer Hyper-V ou VirtualBox
    • Linux: Vérifier KVM
    • macOS: Vérifier VirtualBox ou HyperKit
  2. Allouer plus de ressources:

    minikube start --memory=4096 --cpus=2
  3. Utiliser un driver différent:

    minikube start --driver=docker
    # ou
    minikube start --driver=virtualbox
  4. Réinitialiser minikube:

    minikube delete
    minikube start

Problème 4: Erreur de certificat SSL​

Symptôme:

x509: certificate signed by unknown authority

Solutions:

  1. Vérifier la date système:

    • Assurez-vous que la date/heure de votre système est correcte
  2. Réinitialiser le contexte:

    kubectl config use-context minikube
  3. Recréer le cluster:

    minikube delete
    minikube start

Problème 5: kubectl version affiche seulement le client​

Symptôme:

kubectl version --client
# Fonctionne, mais
kubectl version
# Erreur: Unable to connect to the server

Solution:

  • Le cluster n'est pas démarré ou kubectl n'est pas configuré
  • Suivez les étapes de "Vérification de l'Installation" ci-dessus

Chapitre précédent: Chapitre 1.5 - Concepts Fondamentaux
Retour au module: Module 1 - Introduction à Kubernetes
Lab suivant: Lab 1.1 - Premier Déploiement


Chapitre créé le: Décembre 2024