Développement Web

Kubernetes pour débutants : orchestrer ses conteneurs

9 min de lecture

Ce que vous saurez faire

Ce tutoriel s’adresse aux administrateurs système des PME sénégalaises qui gèrent des serveurs Linux pour leur entreprise. Que vous administriez un serveur web pour une boutique en ligne a Dakar, un serveur de fichiers pour une fiduciaire a Thies, ou une machine de développement pour une startup a Saint-Louis, la maitrise des commandes Linux essentielles est indispensable. Vous apprendrez a naviguer dans le système de fichiers, gérer les utilisateurs et permissions, surveiller les processus, configurer le réseau, installer des paquets, et diagnostiquer les problemes courants. A la fin de ce guide, vous disposerez d’une boite a outils complète de commandes pour administrer efficacement n’importe quel serveur Linux, que ce soit Ubuntu, Debian, CentOS ou Rocky Linux, qui sont les distributions les plus répandues dans l’hébergement africain.

Étape 1 : Se connecter et explorer l’environnement

Après avoir accede au serveur via SSH, commencez par identifier l’environnement. La commande whoami retourne l’utilisateur courant, hostname le nom de la machine, et uname -a les informations du noyau. Ces commandes simples permettent de confirmer que vous etes connecte au bon serveur.

whoami
hostname
uname -a
# Linux srv-ecom 5.15.0-88-generic #98-Ubuntu SMP x86_64 GNU/Linux

cat /etc/os-release
# PRETTY_NAME="Ubuntu 22.04.3 LTS"
uptime
# 14:23:01 up 45 days, 3:12, 2 users, load average: 0.15, 0.22, 0.18

La commande uptime affiche depuis combien de temps le serveur tourne et sa charge moyenne. Une charge supérieure au nombre de CPU indique un serveur surcharge.

Étape 2 : Naviguer dans le système de fichiers

Les commandes de navigation sont pwd (repertoire courant), cd (changer de repertoire), et ls (lister). Utilisez toujours ls -lah pour voir les permissions, la taille lisible et les fichiers caches.

pwd
# /home/admin

cd /var/www/html
ls -lah
# drwxr-xr-x 5 www-data www-data 4.0K Apr 15 10:23 .
# -rw-r--r-- 1 www-data www-data  12K Apr 15 10:20 index.php
# -rw-r--r-- 1 www-data www-data 2.3K Apr 10 15:45 .htaccess

cd ~        # Retour au home
cd -        # Retour au repertoire precedent
tree -L 2   # Affiche l'arborescence sur 2 niveaux

Étape 3 : Rechercher des fichiers efficacement

Pour trouver des fichiers, utilisez find (recherche temps réel) ou locate (recherche par index). La commande find est plus puissante avec ses filtres.

# Trouver tous les fichiers .log modifies ces 7 derniers jours
find /var/log -name "*.log" -mtime -7

# Trouver les fichiers de plus de 100 Mo
find /var -type f -size +100M -exec ls -lh {} \;

# Trouver et supprimer les fichiers .tmp de plus de 30 jours
find /tmp -name "*.tmp" -mtime +30 -delete

# Recherche rapide par nom (necessite updatedb)
sudo updatedb
locate nginx.conf

Étape 4 : Rechercher du contenu avec grep

La commande grep recherche des motifs dans les fichiers. Combinée avec des pipes, elle devient un outil d’analyse puissant pour parcourir des logs ou du code.

# Rechercher "erreur" dans tous les logs
grep -i "erreur" /var/log/syslog

# Recherche recursive avec numeros de ligne
grep -rn "TODO" /var/www/html/

# Afficher 3 lignes avant et apres chaque match
grep -B 3 -A 3 "500 Internal" /var/log/nginx/access.log

# Compter les requetes 404 du jour
grep "$(date +%d/%b/%Y)" /var/log/nginx/access.log | grep -c " 404 "

# Exclure certains motifs
grep -v "healthcheck" /var/log/nginx/access.log

Étape 5 : Gérer les permissions et proprietes

Linux utilise un système de permissions base sur proprietaire/groupe/autres, avec lecture (r), écriture (w), exécution (x). Les commandes chmod et chown modifient ces attributs.

# Voir les permissions
ls -l script.sh
# -rw-r--r-- 1 admin admin 1.2K Apr 15 script.sh

# Rendre executable pour le proprietaire
chmod u+x script.sh

# Permissions standards pour un site web
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;

# Permission sensible pour cles SSH
chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh/

Les permissions 755 signifient rwxr-xr-x (proprietaire peut tout, autres peuvent lire et exécuter). Ne donnez jamais 777 en production.

Étape 6 : Gérer les utilisateurs et groupes

Pour créer un utilisateur employe sans acces root, utilisez adduser (interactif) ou useradd (scriptable). Ajoutez-le au groupe sudo uniquement si necessaire.

# Creer un nouvel utilisateur
sudo adduser fatou
# Set password, Full Name, etc.

# Ajouter au groupe sudo (pouvoir admin)
sudo usermod -aG sudo fatou

# Verifier les groupes d'un utilisateur
groups fatou
# fatou : fatou sudo www-data

# Lister tous les utilisateurs avec shell
cat /etc/passwd | grep -v nologin

# Changer le mot de passe
sudo passwd fatou

# Supprimer un utilisateur et son home
sudo deluser --remove-home ancien_stagiaire

Étape 7 : Surveiller les processus

Les commandes ps, top, et htop listent les processus. htop est plus visuel mais doit être installe. Utilisez kill pour terminer un processus.

# Installer htop
sudo apt install htop -y
htop    # Interface interactive, q pour quitter

# Lister tous les processus
ps aux | head -20

# Chercher un processus specifique
ps aux | grep nginx

# Top 10 des processus consommant le plus de RAM
ps aux --sort=-%mem | head -11

# Tuer un processus par PID
kill 1234
kill -9 1234    # Force (SIGKILL)

# Tuer par nom
pkill -f "python mon_script"

Étape 8 : Surveiller disque et mémoire

Sur un serveur de PME, le remplissage du disque est une cause frequente d’incident. Les commandes df et du permettent d’identifier les problemes avant qu’ils ne bloquent la production.

# Espace disque par partition
df -h
# /dev/sda1       50G   42G  5.5G  89% /

# Taille des repertoires (tri decroissant)
sudo du -h --max-depth=1 /var | sort -hr | head
# 15G     /var/log
# 8.2G    /var/lib/mysql
# 3.1G    /var/www

# Memoire disponible
free -h
#               total   used   free   shared  buff/cache  available
# Mem:          7.8Gi  2.1Gi  1.2Gi   0.3Gi    4.5Gi      5.2Gi

# Activite en temps reel
vmstat 2 5      # Stats toutes les 2s, 5 fois

Étape 9 : Gérer les paquets logiciels

Sur Debian/Ubuntu, utilisez apt. Sur CentOS/Rocky/RHEL, utilisez dnf ou yum. Mettez toujours l’index a jour avant d’installer.

# Debian/Ubuntu
sudo apt update
sudo apt upgrade -y
sudo apt install nginx certbot python3-pip -y
sudo apt remove --purge ancien_paquet
apt list --installed | grep nginx

# CentOS/Rocky/RHEL
sudo dnf check-update
sudo dnf update -y
sudo dnf install nginx certbot
sudo dnf remove ancien_paquet

# Verifier les mises a jour de securite (Ubuntu)
sudo unattended-upgrade --dry-run

Étape 10 : Configurer le réseau

Les commandes réseau essentielles incluent ip, ss, et ping. L’ancienne commande ifconfig est remplacée par ip sur les systèmes modernes.

# Voir les interfaces
ip addr show
ip a        # Forme courte

# Routes
ip route show

# Connexions ecoutees
sudo ss -tulpn
# tcp  LISTEN  0  511  *:80    users:(("nginx",pid=1234))
# tcp  LISTEN  0  128  *:22    users:(("sshd",pid=567))

# Tester la connectivite
ping -c 4 8.8.8.8
ping -c 4 google.com

# Tracer le chemin reseau
traceroute orange.sn

# DNS
dig itskillscenter.io
nslookup example.com

Étape 11 : Archiver et compresser

Les sauvegardes utilisent tar combine avec gzip. Pour une PME, la règle 3-2-1 s’applique : 3 copies, 2 supports, 1 hors-site.

# Creer une archive compressee
tar -czvf backup_www_$(date +%F).tar.gz /var/www/html/

# Lister le contenu sans extraire
tar -tzvf backup_www_2026-04-23.tar.gz | head

# Extraire
tar -xzvf backup_www_2026-04-23.tar.gz -C /tmp/restore/

# Compression individuelle
gzip gros_fichier.log        # devient gros_fichier.log.gz
gunzip gros_fichier.log.gz

# Format zip (compatible Windows)
zip -r archive.zip dossier/
unzip archive.zip

Étape 12 : Consulter les logs

Les logs sont dans /var/log/. Sur les systèmes modernes avec systemd, utilisez journalctl. Suivez un log en temps réel avec tail -f.

# Dernieres lignes d'un log
tail -n 50 /var/log/syslog

# Suivi en temps reel
sudo tail -f /var/log/nginx/error.log

# Logs d'un service via journalctl
sudo journalctl -u nginx -f
sudo journalctl -u mysql --since "1 hour ago"

# Logs du boot courant
sudo journalctl -b

# Messages kernel
dmesg | tail -30

Étape 13 : Gérer les services avec systemd

Systemd est le gestionnaire de services standard. Utilisez systemctl pour démarrer, arreter, et activer les services au boot.

# Statut d'un service
sudo systemctl status nginx

# Demarrer / arreter / redemarrer
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx    # Sans interruption

# Activer au demarrage
sudo systemctl enable nginx
sudo systemctl disable nginx

# Lister tous les services actifs
systemctl list-units --type=service --state=running

# Services echoues
systemctl --failed

Étape 14 : Raccourcis et productivite

Les alias et l’historique boostent votre efficacite. Ajoutez vos raccourcis dans ~/.bashrc.

# Editer le bashrc
nano ~/.bashrc

# Ajouter a la fin :
alias ll='ls -lah'
alias gs='git status'
alias ports='sudo ss -tulpn'
alias logs='sudo tail -f /var/log/syslog'

# Recharger
source ~/.bashrc

# Historique des commandes
history | tail -20
history | grep "apt install"    # Retrouver une installation
!123        # Rejouer la commande numero 123 de l'historique
!!          # Rejouer la derniere commande
sudo !!     # Rejouer avec sudo

Erreurs

Utiliser sudo sans comprendre : taper systématiquement sudo avant chaque commande cree des fichiers appartenant a root dans votre home, ce qui causera des problemes de permissions plus tard. Utilisez sudo uniquement pour les opérations système.

rm -rf sans réflexion : la commande rm -rf /* ou pire rm -rf / detruit le système. Vérifiez toujours votre chemin avant d’exécuter. En cas de doute, prefixez par ls pour voir ce qui sera supprime.

Ignorer les permissions : mettre 777 sur des fichiers web est une faille de sécurité majeure. Tout attaquant qui obtient une exécution limitée peut alors modifier votre site. Respectez 644 pour les fichiers et 755 pour les dossiers.

Éditer /etc/sudoers directement : n’utilisez jamais nano ou vim directement sur ce fichier. Une erreur de syntaxe peut vous bloquer l’acces sudo. Utilisez toujours sudo visudo qui valide la syntaxe avant de sauvegarder.

Ne pas vérifier l’espace disque : un serveur dont le disque est plein refuse les connexions SSH, arrete MySQL, et bloque nginx. Surveillez avec df -h et mettez en place des alertes a 80% de remplissage.

Supprimer les logs manuellement : au lieu de rm /var/log/*.log, configurez logrotate. La suppression brutale peut laisser des descripteurs ouverts qui continuent a consommer de l’espace sans liberer.

Checklist

Commandes essentielles maîtrisées : ls -lah, cd, pwd, find, grep.

Permissions comprises : 644 pour fichiers, 755 pour dossiers, 600 pour cles privées.

chown et chmod utilises correctement sur /var/www/html.

Utilisateur non-root cree avec sudo pour les opérations quotidiennes.

Processus surveilles avec htop ou ps aux.

Espace disque vérifie avec df -h, alerte configurée a 80%.

Mémoire surveillée avec free -h.

Paquets mis a jour régulièrement avec apt update && apt upgrade.

Services gérés avec systemctl (start, enable, status).

Logs consultes via tail -f et journalctl -u service.

Ports ecoutes listes avec sudo ss -tulpn.

Sauvegardes créées avec tar -czvf et testées en restauration.

Alias productivite ajoutes dans ~/.bashrc.

sudo visudo utilise pour éditer /etc/sudoers (jamais nano directement).

Historique exploite avec history | grep et !!.

Partager