Kubernetes容器命令

时间:2019-05-28 12:49:43

标签: kubernetes cat

我正在Kubernetes中使用Neo4j。 作为展示,我想用原始数据填充Pod中的Neo4j,我可以使用原始文件来处理,而我在/bin文件夹中使用原始文件外壳。 因此,基本上,我启动了容器并运行cat bin/initialData.cypher | bin/cypher-shell。 我已经通过在kubectl exec -it <pod> /bin/bash bash中运行它来验证了它的有效性。 但是,无论我如何尝试映射到spec.container.command,它都会失败。 目前,我最好的猜测是

spec:
  containers:
    command:
        - /bin/bash
        - -c
        - |
          cd bin
          ls
          cat initialData.cypher | cypher-shell

这不起作用。它可以正确显示ls,但随后会抛出connection refused,我不知道它从哪里来。

编辑:已更新

3 个答案:

答案 0 :(得分:1)

您执行了有效的规范,但语法错误。

尝试这样

spec:
  containers:
    command: ["/bin/bash"]
    args: ["-c","cat import/initialData.cypher | bin/cypher-shell"]

答案 1 :(得分:0)

Exec似乎是处理此问题的更好方法,但通常不会同时使用command和args。在这种情况下,可能只需将整个内容放入命令中即可。

答案 2 :(得分:0)

我发现了我的问题所在。 我没有意识到命令未链接到初始化生命周期,这意味着在容器中启动neo4j之前已执行命令。 基本上,使用命令对我来说是错误的方法。