web-dev-qa-db-ja.com

kubectl runを使用してボリュームを持つkubernetesポッドを作成する

Kubectl runを使用してDeployment/Jobでポッドを作成できることを理解しています。しかし、それに接続されたボリュームを持つものを作成することは可能ですか?私はこのコマンドを実行してみました:

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には表示されません。

接続できるボリュームを持つポッドを作成するより良い方法はありますか?

23
Kenny Ho

JSONオーバーライドが正しく指定されていません。残念ながら、kubectl runは、理解できないフィールドを無視するだけです。

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オーバーライドとは異なることがわかります(ネストされたテンプレート/仕様が欠落しており、ボリューム、volumeMounts、およびコンテナーは配列である必要があります)。

31
Tim Allclair