453 lines
9.2 KiB
Plaintext
453 lines
9.2 KiB
Plaintext
# Guide Utilisateur kubectl - Cluster RBER
|
|
|
|
## Introduction
|
|
|
|
Ce guide explique comment configurer et utiliser `kubectl` pour accéder aux applications hébergées sur le cluster Kubernetes RBER.
|
|
|
|
Avec cet accès, tu peux :
|
|
- Voir l'état des applications (pods, services)
|
|
- Consulter les logs
|
|
- Redémarrer des applications (selon ton rôle)
|
|
- Accéder aux bases de données via port-forward
|
|
|
|
---
|
|
|
|
## 1. Prérequis
|
|
|
|
### 1.1 Fichiers reçus
|
|
|
|
Tu as reçu un fichier d'accès :
|
|
- `ton-nom.kubeconfig.gpg` (chiffré) — nécessite le mot de passe fourni séparément
|
|
- ou `ton-nom.kubeconfig` (non chiffré)
|
|
|
|
### 1.2 Logiciels nécessaires
|
|
|
|
| Logiciel | Obligatoire | Description |
|
|
|----------|-------------|-------------|
|
|
| kubectl | Oui | Client Kubernetes |
|
|
| gpg | Si fichier .gpg | Pour déchiffrer le fichier |
|
|
|
|
---
|
|
|
|
## 2. Installation de kubectl
|
|
|
|
### Ubuntu / Debian
|
|
|
|
```bash
|
|
# Télécharger
|
|
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 dans le PATH
|
|
sudo mv kubectl /usr/local/bin/
|
|
|
|
# Vérifier
|
|
kubectl version --client
|
|
```
|
|
|
|
### macOS
|
|
|
|
```bash
|
|
# Avec Homebrew
|
|
brew install kubectl
|
|
|
|
# Vérifier
|
|
kubectl version --client
|
|
```
|
|
|
|
### Windows
|
|
|
|
```powershell
|
|
# Avec Chocolatey (PowerShell administrateur)
|
|
choco install kubernetes-cli
|
|
|
|
# Vérifier
|
|
kubectl version --client
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Configuration de l'accès
|
|
|
|
### 3.1 Déchiffrer le fichier (si .gpg)
|
|
|
|
```bash
|
|
# Installer GPG si nécessaire
|
|
# Ubuntu: sudo apt install gnupg
|
|
# macOS: brew install gnupg
|
|
|
|
# Déchiffrer (saisir le mot de passe fourni)
|
|
gpg --decrypt ton-nom.kubeconfig.gpg > ton-nom.kubeconfig
|
|
```
|
|
|
|
### 3.2 Installer le fichier kubeconfig
|
|
|
|
```bash
|
|
# Créer le dossier .kube
|
|
mkdir -p ~/.kube
|
|
|
|
# Copier le fichier
|
|
cp ton-nom.kubeconfig ~/.kube/config-rber
|
|
|
|
# Sécuriser les permissions
|
|
chmod 600 ~/.kube/config-rber
|
|
```
|
|
|
|
### 3.3 Configurer la variable d'environnement
|
|
|
|
```bash
|
|
# Définir la variable
|
|
export KUBECONFIG=~/.kube/config-rber
|
|
|
|
# Rendre permanent (ajouter au .bashrc ou .zshrc)
|
|
echo 'export KUBECONFIG=~/.kube/config-rber' >> ~/.bashrc
|
|
source ~/.bashrc
|
|
```
|
|
|
|
### 3.4 Vérifier la connexion
|
|
|
|
```bash
|
|
# Tester
|
|
kubectl get pods
|
|
|
|
# Voir tes droits
|
|
kubectl auth can-i --list
|
|
|
|
# Contexte actuel
|
|
kubectl config current-context
|
|
```
|
|
|
|
---
|
|
|
|
## 4. Commandes de base
|
|
|
|
### 4.1 Voir les ressources
|
|
|
|
```bash
|
|
# Lister les pods (applications)
|
|
kubectl get pods
|
|
|
|
# Lister les services
|
|
kubectl get svc
|
|
|
|
# Lister les deployments
|
|
kubectl get deployments
|
|
|
|
# Lister les ingress (URLs)
|
|
kubectl get ingress
|
|
|
|
# Voir toutes les ressources
|
|
kubectl get all
|
|
```
|
|
|
|
### 4.2 Détails d'une ressource
|
|
|
|
```bash
|
|
# Détails d'un pod
|
|
kubectl describe pod nom-du-pod
|
|
|
|
# Détails d'un service
|
|
kubectl describe svc nom-du-service
|
|
|
|
# Détails d'un deployment
|
|
kubectl describe deployment nom-du-deployment
|
|
```
|
|
|
|
### 4.3 Logs
|
|
|
|
```bash
|
|
# Logs d'un pod
|
|
kubectl logs nom-du-pod
|
|
|
|
# Logs en temps réel (suivre)
|
|
kubectl logs -f nom-du-pod
|
|
|
|
# Dernières 100 lignes
|
|
kubectl logs nom-du-pod --tail=100
|
|
|
|
# Logs du pod précédent (après crash)
|
|
kubectl logs nom-du-pod --previous
|
|
|
|
# Logs de tous les pods d'une application
|
|
kubectl logs -l app=moodle --all-containers
|
|
```
|
|
|
|
### 4.4 Accéder à un pod
|
|
|
|
```bash
|
|
# Ouvrir un shell dans le pod
|
|
kubectl exec -it nom-du-pod -- bash
|
|
|
|
# Si bash n'existe pas, essayer sh
|
|
kubectl exec -it nom-du-pod -- sh
|
|
|
|
# Exécuter une commande unique
|
|
kubectl exec nom-du-pod -- ls /var/www
|
|
```
|
|
|
|
### 4.5 Port-forward (accès local)
|
|
|
|
```bash
|
|
# Accéder à un service localement
|
|
kubectl port-forward svc/moodle 8080:80
|
|
|
|
# Puis ouvrir http://localhost:8080 dans ton navigateur
|
|
|
|
# Accéder à PostgreSQL
|
|
kubectl port-forward svc/uac-pg-cluster-rw 5432:5432
|
|
|
|
# Puis se connecter avec psql ou pgAdmin sur localhost:5432
|
|
```
|
|
|
|
---
|
|
|
|
## 5. Travailler avec plusieurs namespaces
|
|
|
|
Si tu as accès à plusieurs namespaces, tu peux naviguer entre eux.
|
|
|
|
### 5.1 Voir les contextes disponibles
|
|
|
|
```bash
|
|
kubectl config get-contexts
|
|
|
|
# Exemple de sortie :
|
|
# CURRENT NAME CLUSTER NAMESPACE
|
|
# * jean.dupont-moodle-uac@rber-fidj rber-fidj moodle-uac
|
|
# jean.dupont-moodle-una@rber-fidj rber-fidj moodle-una
|
|
```
|
|
|
|
### 5.2 Changer de contexte
|
|
|
|
```bash
|
|
# Basculer vers moodle-una
|
|
kubectl config use-context jean.dupont-moodle-una@rber-fidj
|
|
|
|
# Vérifier
|
|
kubectl config current-context
|
|
```
|
|
|
|
### 5.3 Spécifier le namespace directement
|
|
|
|
```bash
|
|
# Sans changer de contexte, utiliser -n
|
|
kubectl get pods -n moodle-uac
|
|
kubectl get pods -n moodle-una
|
|
kubectl logs -n moodle-una nom-du-pod
|
|
```
|
|
|
|
---
|
|
|
|
## 6. Cas d'usage courants
|
|
|
|
### 6.1 Vérifier si une application fonctionne
|
|
|
|
```bash
|
|
# Voir l'état des pods
|
|
kubectl get pods
|
|
|
|
# États possibles :
|
|
# - Running : OK, l'application tourne
|
|
# - Pending : En attente de ressources
|
|
# - Error : Erreur
|
|
# - CrashLoop : L'application redémarre en boucle
|
|
|
|
# Si problème, voir les détails
|
|
kubectl describe pod nom-du-pod
|
|
|
|
# Voir les logs
|
|
kubectl logs nom-du-pod
|
|
```
|
|
|
|
### 6.2 Redémarrer une application
|
|
|
|
```bash
|
|
# Redémarrer tous les pods d'un deployment
|
|
kubectl rollout restart deployment/moodle
|
|
|
|
# Suivre le redémarrage
|
|
kubectl rollout status deployment/moodle
|
|
|
|
# Vérifier que les nouveaux pods sont Running
|
|
kubectl get pods
|
|
```
|
|
|
|
### 6.3 Voir pourquoi un pod ne démarre pas
|
|
|
|
```bash
|
|
# Étape 1 : Voir l'état
|
|
kubectl get pods
|
|
|
|
# Étape 2 : Voir les events
|
|
kubectl describe pod nom-du-pod
|
|
|
|
# Regarder la section "Events" en bas
|
|
|
|
# Étape 3 : Si le pod a déjà démarré puis crashé
|
|
kubectl logs nom-du-pod --previous
|
|
```
|
|
|
|
### 6.4 Se connecter à la base de données
|
|
|
|
```bash
|
|
# Ouvrir un tunnel vers PostgreSQL
|
|
kubectl port-forward svc/uac-pg-cluster-rw 5432:5432
|
|
|
|
# Dans un autre terminal, se connecter
|
|
psql -h localhost -U moodleuser -d moodle
|
|
|
|
# Ou utiliser un outil graphique (pgAdmin, DBeaver) sur localhost:5432
|
|
```
|
|
|
|
### 6.5 Copier un fichier depuis/vers un pod
|
|
|
|
```bash
|
|
# Copier un fichier depuis le pod vers local
|
|
kubectl cp nom-du-pod:/chemin/fichier.log ./fichier.log
|
|
|
|
# Copier un fichier local vers le pod
|
|
kubectl cp ./mon-fichier.txt nom-du-pod:/tmp/mon-fichier.txt
|
|
```
|
|
|
|
---
|
|
|
|
## 7. Alias recommandés
|
|
|
|
Ajoute ces raccourcis à ton `~/.bashrc` ou `~/.zshrc` :
|
|
|
|
```bash
|
|
# Raccourcis kubectl
|
|
alias k='kubectl'
|
|
alias kgp='kubectl get pods'
|
|
alias kgs='kubectl get svc'
|
|
alias kgd='kubectl get deployments'
|
|
alias kgi='kubectl get ingress'
|
|
alias kga='kubectl get all'
|
|
alias kl='kubectl logs'
|
|
alias klf='kubectl logs -f'
|
|
alias ke='kubectl exec -it'
|
|
alias kd='kubectl describe'
|
|
alias kpf='kubectl port-forward'
|
|
|
|
# Autocomplétion (très utile !)
|
|
source <(kubectl completion bash) # Pour bash
|
|
# source <(kubectl completion zsh) # Pour zsh
|
|
```
|
|
|
|
Après modification :
|
|
```bash
|
|
source ~/.bashrc
|
|
```
|
|
|
|
Utilisation :
|
|
```bash
|
|
kgp # = kubectl get pods
|
|
klf mon-pod # = kubectl logs -f mon-pod
|
|
ke mon-pod bash # = kubectl exec -it mon-pod bash
|
|
```
|
|
|
|
---
|
|
|
|
## 8. Résolution de problèmes
|
|
|
|
### Connexion refusée
|
|
|
|
```
|
|
Unable to connect to the server: dial tcp: lookup api.rber.bj: no such host
|
|
```
|
|
|
|
**Solutions :**
|
|
1. Vérifier ta connexion internet
|
|
2. Vérifier que le DNS résout : `nslookup api.rber.bj`
|
|
3. Tester la connectivité : `curl -k https://api.rber.bj:6443/healthz`
|
|
|
|
### Erreur de certificat
|
|
|
|
```
|
|
certificate signed by unknown authority
|
|
```
|
|
|
|
**Solutions :**
|
|
1. Le fichier kubeconfig est peut-être corrompu
|
|
2. Redemander un nouveau fichier à l'administrateur
|
|
|
|
### Permission denied
|
|
|
|
```
|
|
Error from server (Forbidden): pods is forbidden
|
|
```
|
|
|
|
**Solutions :**
|
|
1. Vérifier ton namespace : `kubectl config current-context`
|
|
2. Vérifier tes droits : `kubectl auth can-i --list`
|
|
3. Tu n'as peut-être pas accès à cette ressource - contacter l'administrateur
|
|
|
|
### Namespace incorrect
|
|
|
|
```
|
|
No resources found in default namespace
|
|
```
|
|
|
|
**Solutions :**
|
|
1. Tu es probablement dans le mauvais namespace
|
|
2. Vérifier : `kubectl config current-context`
|
|
3. Lister tes contextes : `kubectl config get-contexts`
|
|
4. Changer de contexte ou utiliser `-n namespace`
|
|
|
|
### Token expiré
|
|
|
|
```
|
|
error: You must be logged in to the server (Unauthorized)
|
|
```
|
|
|
|
**Solutions :**
|
|
1. Ton token a peut-être expiré
|
|
2. Contacter l'administrateur pour obtenir un nouveau fichier kubeconfig
|
|
|
|
---
|
|
|
|
## 9. Référence rapide
|
|
|
|
### Commandes essentielles
|
|
|
|
| Action | Commande |
|
|
|--------|----------|
|
|
| Lister les pods | `kubectl get pods` |
|
|
| Logs d'un pod | `kubectl logs <pod>` |
|
|
| Logs en temps réel | `kubectl logs -f <pod>` |
|
|
| Entrer dans un pod | `kubectl exec -it <pod> -- bash` |
|
|
| Détails d'un pod | `kubectl describe pod <pod>` |
|
|
| Redémarrer | `kubectl rollout restart deployment/<nom>` |
|
|
| Port-forward | `kubectl port-forward svc/<svc> 8080:80` |
|
|
| Changer namespace | `kubectl config use-context <contexte>` |
|
|
|
|
### États des pods
|
|
|
|
| État | Signification |
|
|
|------|---------------|
|
|
| Running | OK, fonctionne |
|
|
| Pending | En attente (ressources, stockage) |
|
|
| ContainerCreating | Téléchargement de l'image |
|
|
| Error | Erreur au démarrage |
|
|
| CrashLoopBackOff | Crash répété |
|
|
| Terminating | En cours d'arrêt |
|
|
|
|
---
|
|
|
|
## 10. Contact et support
|
|
|
|
En cas de problème :
|
|
|
|
- **Email** : devops@rber.bj
|
|
- **Documentation** : https://docs.rber.bj
|
|
|
|
Informations à fournir :
|
|
1. Ton nom d'utilisateur
|
|
2. Le namespace concerné
|
|
3. La commande exécutée
|
|
4. Le message d'erreur complet
|
|
|
|
---
|
|
|
|
*Guide utilisateur kubectl RBER - Version 1.0 - Janvier 2026* |