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
-
Téléchargez la dernière version depuis:
https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe(Remplacez
v1.28.0par la version désirée) -
Ajoutez kubectl.exe à votre PATH:
- Créez un dossier
C:\kubectl - Placez
kubectl.exedans ce dossier - Ajoutez
C:\kubectlà votre variable d'environnement PATH
- Créez un dossier
-
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:
-
Vérifier l'installation:
# Windows
where kubectl
# Linux/macOS
which kubectl -
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
-
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:
-
Vérifier que le cluster est démarré:
# Pour minikube
minikube status
minikube start
# Pour kind
kind get clusters -
Vérifier la configuration:
kubectl config view
kubectl config current-context -
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:
-
Vérifier la virtualisation:
- Windows: Activer Hyper-V ou VirtualBox
- Linux: Vérifier KVM
- macOS: Vérifier VirtualBox ou HyperKit
-
Allouer plus de ressources:
minikube start --memory=4096 --cpus=2 -
Utiliser un driver différent:
minikube start --driver=docker
# ou
minikube start --driver=virtualbox -
Réinitialiser minikube:
minikube delete
minikube start
Problème 4: Erreur de certificat SSL
Symptôme:
x509: certificate signed by unknown authority
Solutions:
-
Vérifier la date système:
- Assurez-vous que la date/heure de votre système est correcte
-
Réinitialiser le contexte:
kubectl config use-context minikube -
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
Navigation
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