2016-05-31 59 views
8

我知道您可以使用kubectl run創建一個具有Deployment/Job的吊艙。但是是否有可能創建一個帶有卷的卷?我試着運行這個命令:使用kubectl run創建具有卷的kubernetes吊艙

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 

但是這個卷並沒有出現在交互式bash中。

有沒有更好的方法來創建一個容量可以附加到容器的容器?

+0

我也嘗試過使用kubectl創建,然後做一個exec/attach但它沒有爲我工作。但這可能是因爲我遇到了這個bug: https://github.com/kubernetes/kubernetes/issues/16670 –

回答

12

您的JSON覆蓋指定有誤。不幸的是,kubectl運行只是忽略了它不理解的領域。

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 

要調試這個問題,我跑了您指定的命令,然後在另一端然:

kubectl get job ubuntu -o json 

從那裏,你可以看到實際的工作結構從您的JSON覆蓋不同(你是缺少嵌套的模板/規格,而volume,volumeMounts和容器需要是數組)。

+0

謝謝,尤其是調試它的提示。看起來像做一個創造,然後附加可能是一個更好的方式去...只要我能得到它的工作。 (出於某種原因,我甚至無法讓skydns驗證步驟起作用,attach/exec步驟就會掛起。)關於調試這些情況,您有任何提示嗎? –

相關問題