You are viewing documentation for Kubernetes version: v1.31
Kubernetes v1.31 documentation non maintenue. Vous consultez une version statique. Pour une documentation Ă jour, veuillez consulter: derniĂšre version.
Obtenez un shell dans un conteneur en cours d'exécution
Cette page montre comment utiliser kubectl exec
pour obtenir un shell dans un conteneur en cours d'exécution.
Pré-requis
Vous devez disposer d'un cluster Kubernetes et l'outil de ligne de commande kubectl doit ĂȘtre configurĂ© pour communiquer avec votre cluster. Si vous ne possĂ©dez pas dĂ©jĂ de cluster, vous pouvez en crĂ©er un en utilisant Minikube, ou vous pouvez utiliser l'un de ces environnements Kubernetes:
Pour consulter la version, entrezkubectl version
.
Obtenir un shell dans un conteneur
Dans cet exercice, vous allez créer un pod contenant un conteneur. Le conteneur exécute une image nginx. Voici le fichier de configuration du Pod:
apiVersion: v1
kind: Pod
metadata:
name: shell-demo
spec:
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: nginx
image: nginx
volumeMounts:
- name: shared-data
mountPath: /usr/share/nginx/html
hostNetwork: true
dnsPolicy: Default
Créez le Pod:
kubectl apply -f https://k8s.io/examples/application/shell-demo.yaml
Vérifiez que le conteneur est en cours d'exécution:
kubectl get pod shell-demo
Obtenez un shell pour le conteneur en cours d'exécution:
kubectl exec -it shell-demo -- /bin/bash
Note:
Le double tiret "-" est utilisé pour séparer les arguments que vous souhaitez passer à la commande des arguments kubectl.Dans votre shell, listez le répertoire racine:
root@shell-demo:/# ls /
Dans votre shell, testez d'autres commandes. Voici quelques exemples:
root@shell-demo:/# ls /
root@shell-demo:/# cat /proc/mounts
root@shell-demo:/# cat /proc/1/maps
root@shell-demo:/# apt-get update
root@shell-demo:/# apt-get install -y tcpdump
root@shell-demo:/# tcpdump
root@shell-demo:/# apt-get install -y lsof
root@shell-demo:/# lsof
root@shell-demo:/# apt-get install -y procps
root@shell-demo:/# ps aux
root@shell-demo:/# ps aux | grep nginx
Ăcriture de la page racine de nginx
Regardez Ă nouveau le fichier de configuration de votre Pod.
Le pod a un volume emptyDir
et le conteneur monte le volume dans /usr/share/nginx/html
.
Dans votre shell, créez un fichier index.html
dans le répertoire /usr/share/nginx/html
:
root@shell-demo:/# echo Hello shell demo > /usr/share/nginx/html/index.html
Dans votre shell, envoyez une requĂȘte GET au serveur nginx:
root@shell-demo:/# apt-get update
root@shell-demo:/# apt-get install curl
root@shell-demo:/# curl localhost
La sortie affiche le texte que vous avez écrit dans le fichier index.html
:
Hello shell demo
Lorsque vous avez terminé avec votre shell, entrez exit
.
Exécution de commandes individuelles dans un conteneur
Dans une fenĂȘtre de commande ordinaire, pas votre shell, rĂ©pertoriez les variables d'environnement dans le conteneur en cours d'exĂ©cution:
kubectl exec shell-demo -- env
Essayez d'exécuter d'autres commandes. Voici quelques exemples:
kubectl exec shell-demo ps aux
kubectl exec shell-demo ls /
kubectl exec shell-demo cat /proc/1/mounts
Ouverture d'un shell lorsqu'un pod possĂšde plusieurs conteneurs
Si un pod a plusieurs conteneurs, utilisez --container
ou -c
pour spécifier un conteneur dans la commande kubectl exec
.
Par exemple, supposons que vous ayez un pod nommé my-pod et que le pod ait deux conteneurs nommés main-app et helper-app.
La commande suivante ouvrirait un shell sur le conteneur de l'application principale.
kubectl exec -it my-pod --container main-app -- /bin/bash