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