web-dev-qa-db-fra.com

Créer un pod Kubernetes avec un volume à l'aide de Kubectl Run

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?

23
Kenny Ho

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).

31
Tim Allclair