【问题标题】:Why does kubectl cp command terminates with exit code 126?为什么 kubectl cp 命令以退出代码 126 终止?
【发布时间】:2021-07-09 06:34:44
【问题描述】:

我正在尝试使用以下命令将文件从 pod 复制到本地:

kubectl cp /namespace/pod_name:/path/in/pod /path/in/local

但是command terminates with exit code 126 和复制没有发生。

使用以下命令尝试从本地到 pod 时类似:

kubectl cp /path/in/local /namespace/pod_name:/path/in/pod

它会抛出以下错误:

OCI runtime exec failed: exec failed: container_linux.go:367: starting container process caused: exec: "tar": executable file not found in $PATH: unknown

请帮助解决这个问题。

【问题讨论】:

    标签: kubernetes devops kubectl file-copying


    【解决方案1】:

    kubectl cp 实际上是kubectl exec whatever tar c | tar x 的一个非常小的包装器。这样做的一个副作用是您需要在目标容器中运行 tar 可执行文件,而您似乎没有。

    一般kubectl cp 最好避免使用,它通常只适用于奇怪的调试内容。

    【讨论】:

    • 不错!所以至少我们可以kubectl exec whatever cat c > xkubectl exec whatever base64 c | base64 --decode > x
    【解决方案2】:

    kubectl cp 要求 tar 出现在您的容器中,正如帮助所述:

    !!!重要提示!!! 要求容器中存在“tar”二进制文件 图片。如果 'tar' 不存在,'kubectl cp' 将失败。

    确保您的容器在其$PATH 中包含tar 二进制文件

    【讨论】:

    • 这就是我的解决方案! TYVM!
    【解决方案3】:

    将文件从本地文件系统复制到容器的另一种方法:

    cat [local file path] | kubectl exec -i -n [namespace] [pod] -c [container] "--" sh -c "cat > [remote file path]"
    

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 2020-06-18
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 2017-04-28
      • 1970-01-01
      相关资源
      最近更新 更多