6.7. Exécuter des commandes à distance dans un conteneur OpenShift Container Platform
Vous pouvez utiliser le CLI pour exécuter des commandes à distance dans un conteneur OpenShift Container Platform.
6.7.1. Exécuter des commandes à distance dans des conteneurs
La prise en charge de l'exécution à distance des commandes de conteneurs est intégrée à la CLI.
Procédure
Pour exécuter une commande dans un conteneur :
$ oc exec <pod> [-c <container>] <command> [<arg_1> ... <arg_n>]
Par exemple :
$ oc exec mypod date
Exemple de sortie
Thu Apr 9 02:21:53 UTC 2015
Pour des raisons de sécurité, la commande oc exec
ne fonctionne pas lors de l'accès à des conteneurs privilégiés, sauf si la commande est exécutée par un utilisateur cluster-admin
.
6.7.2. Protocole pour initier une commande à distance à partir d'un client
Les clients lancent l'exécution d'une commande à distance dans un conteneur en envoyant une demande au serveur API de Kubernetes :
/proxy/nodes/<node_name>/exec/<namespace>/<pod>/<container>?command=<command>
Dans l'URL ci-dessus :
-
<node_name>
est le FQDN du nœud. -
<namespace>
est le projet du pod cible. -
<pod>
est le nom du module cible. -
<container>
est le nom du conteneur cible. -
<command>
est la commande à exécuter.
Par exemple :
/proxy/nodes/node123.openshift.com/exec/myns/mypod/mycontainer?command=date
En outre, le client peut ajouter des paramètres à la demande pour indiquer si :
- le client doit envoyer des données à la commande du conteneur distant (stdin).
- le terminal du client est un ATS.
- la commande du conteneur distant doit envoyer la sortie de stdout au client.
- la commande du conteneur distant doit envoyer la sortie de stderr au client.
Après avoir envoyé une demande exec
au serveur API, le client met à niveau la connexion pour qu'elle prenne en charge les flux multiplexés ; la mise en œuvre actuelle utilise HTTP/2.
Le client crée un flux pour stdin, stdout et stderr. Pour distinguer les flux, le client définit l'en-tête streamType
du flux sur l'une des valeurs suivantes : stdin
, stdout
ou stderr
.
Le client ferme tous les flux, la connexion améliorée et la connexion sous-jacente lorsqu'il a terminé la demande d'exécution de la commande à distance.