在 Kubernetes InitContainer 中复制带有通配符“*”的文件

问题描述 投票:0回答:1

我正在尝试将所有文件从图像复制到卷。然而,kubernetes 似乎没有正确解释通配符。因此,当我使用以下命令时,它会失败并显示“未找到”:

initContainers:
- name: init-container-name
  image: <image path>
  command:
  - cp
  - /foo/bar/*
  - /output

如何让 Kubernetes 正确解释 *?有没有办法复制内容而无需周围的

bar
文件夹?

我可以复制整个文件夹:

initContainers:
- name: init-container-name
  image: <image path>
  command:
  - cp
  - -r
  - /foo/bar
  - /output

但是当我只想将文件本身输出时,这会导致

/output/bar
。我也尝试过
- "/foo/bar/*"
- "/foo/bar/"*
,但这也不起作用。

linux kubernetes command-line containers cp
1个回答
0
投票

如何让 Kubernetes 正确解释 *?

你不知道。

这里的问题是通配符由您的 shell 解释,并且您没有运行 shell 命令。您正在将文字字符串

/foo/bar/*
传递给
cp
命令。

您需要将命令包装在 shell 中,如下所示:

initContainers:
- name: init-container-name
  image: <image path>
  command:
  - sh
  - -c
  - |
    cp /foo/bar/* /output
© www.soinside.com 2019 - 2024. All rights reserved.