TD04 | K8s - Manipulation kubectl
Utilisation de ChatGPT/OpenAI tout autre IA = 0/20 sur les TP2/3
Objectifs¶
L'objectif de ce TD est de revoir toutes les commandes utiles que vous utiliserez en entreprise en tant que développeur pour utiliser/déployer dans kubernetes.
Tip
Utiliser la commande kubectl get/create/... --help
quand vous etes bloqué !
Quelques liens utiles :
Prérequis¶
- Cluster Kubernetes déployé avec Kind
- Kubectl pour effectuer toutes les commandes
Concepts de base¶
-
Créer un
namespace
appelé 'monnamespace' et un pod avec une image nginx appelé nginx sur ce namespace. -
Créer le pod qui vient d'être décrit en utilisant YAML (
-o yaml
) -
Créez un pod busybox (en utilisant la commande kubectl) qui exécute la commande "env". Exécutez-la et voyez la sortie
-
Obtenir le YAML pour un nouveau namespace appelé 'monns' sans le créer
-
Créer le YAML pour un nouveau
ResourceQuota
appelé 'monrq' avec des limites strictes de 1 CPU, 1G de mémoire et 2 pods sans le créer. -
Afficher les pods sur tous les namespaces
-
Créer un pod avec l'image
nginx
appelénginx
et exposer le trafic sur le port 80 -
Changer l'image du pod en
nginx:1.7.1
. Observez que le conteneur sera redémarré dès que l'image sera retirée. -
Obtenir l'adresse IP du pod nginx créé à l'étape précédente, utiliser une image busybox temporaire pour
wget
son '/'. -
Obtenir des informations sur le pod nginx, y compris des détails sur les problèmes potentiels (par exemple, le pod n'a pas démarré).
Pods Multi-Containers¶
- Créez un Pod avec deux conteneurs, tous deux avec l'image busybox et la commande
echo hello ; sleep 3600
. Connectez-vous au deuxième conteneur et exécutez 'ls'
Conception de pods¶
Label et annotations¶
-
Créez 3 pods avec les noms nginx1,nginx2,nginx3. Tous les pods doivent avoir le label
app=v1
-
Affichez tous les labels des pods.
-
Modifier les labels du pod
nginx2
pour qu'il soitapp=v2
-
Obtenir le label "app" pour les pods (afficher une colonne avec les étiquettes APP)
-
Affichez uniquement les pods
app=v2
-
Ajouter un nouveau label
tier=web
à tous les pods ayant des labelsapp=v2
ouapp=v1
. -
Ajouter une annotation
owner : marketing
à tous les pods ayant l'étiquetteapp=v2
.
Placement du Pod¶
-
Créer un pod qui sera déployé sur un Noeud ayant le label
accelerator=nvidia-tesla-p100
-
Créer un pod qui sera placé sur le nœud
control-plane
. Utiliser lenodeSelector
et lestolerations
Déploiement¶
-
Créer un déploiement avec l'image
nginx:1.18.0
, appelénginx
, ayant 2 replica, définissant le port 80 comme le port que ce conteneur expose (ne pas créer de service pour ce déploiement). -
Afficher le yaml de ce déploiement
-
Afficher le YAML de l'ensemble des
replica set
créé par ce déploiement -
Vérifier l'état d'avancement du déploiement
-
Mettre à jour l'image nginx vers
nginx:1.19.8
-
Vérifier l'historique des déploiements et confirmer que les replica sont correctes.
-
Annuler le dernier déploiement et vérifier que les nouveaux pods ont l'ancienne image (nginx:1.18.0)
Merci de votre attention