Je comprends que vous pouvez créer un pod avec Deployment/Job en utilisant kubectl run. Mais est-il possible d'en créer un avec un volume attaché? J'ai essayé d'exécuter cette commande:
kubectl run -i --rm --tty ubuntu --overrides='{ "apiVersion":"batch/v1", "spec": {"containers": {"image": "ubuntu:14.04", "volumeMounts": {"mountPath": "/home/store", "name":"store"}}, "volumes":{"name":"store", "emptyDir":{}}}}' --image=ubuntu:14.04 --restart=Never -- bash
Mais le volume n'apparaît pas dans la bash interactive.
Existe-t-il une meilleure façon de créer un pod avec un volume auquel vous pouvez attacher?
Votre remplacement JSON n'est pas spécifié correctement. Malheureusement, kubectl run ignore simplement les champs qu'il ne comprend pas.
kubectl run -i --rm --tty ubuntu --overrides='
{
"apiVersion": "batch/v1",
"spec": {
"template": {
"spec": {
"containers": [
{
"name": "ubuntu",
"image": "ubuntu:14.04",
"args": [
"bash"
],
"stdin": true,
"stdinOnce": true,
"tty": true,
"volumeMounts": [{
"mountPath": "/home/store",
"name": "store"
}]
}
],
"volumes": [{
"name":"store",
"emptyDir":{}
}]
}
}
}
}
' --image=ubuntu:14.04 --restart=Never -- bash
Pour déboguer ce problème, j'ai exécuté la commande que vous avez spécifiée, puis dans un autre terminal, j'ai exécuté:
kubectl get job ubuntu -o json
De là, vous pouvez voir que la structure de travail réelle diffère de votre remplacement json (vous manquiez le modèle/spécification imbriqué et les volumes, volumesMounts et conteneurs doivent être des tableaux).