K8s 不在持久卷上挂载文件

K8s doesn't mount files on Persistent Volume

我有一个 Docker 图像,我想在 Kubernetes 上共享一个卷(持久卷)上的整个目录。

Docker文件

FROM node:carbon
WORKDIR /node-test
COPY hello.md /node-test/hello.md
VOLUME /node-test
CMD ["tail", "-f", "/dev/null"]

基本上它复制一个文件 hello.md 并使其成为图像的一部分(我们称之为 my-image)。

在 Kubernetes 部署配置中,我从 my-image 创建一个容器,并将特定目录共享到一个卷。

Kubernetes 部署

# ...
 spec:
    containers:
    - image: my-user/my-image:v0.0.1
      name: node
      volumeMounts:
      - name: node-volume
        mountPath: /node-test
    volumes:
    - name: node-volume
      persistentVolumeClaim:
        claimName: node-volume-claim

我希望在持久卷的目录中看到 hello.md 文件,但什么也没有显示。

如果我不将容器绑定到卷,我可以看到 hello.md 文件(带有 kubectl exec -it my-container bash)。

我所做的与 official Kubernetes example 所做的没有什么不同。事实上,我可以更改 mountPath 并切换到官方 Wordpress 图像,它会按预期工作。

如何Wordpress image将所有文件复制到卷目录中?

我的 Wordpress Docker 文件中缺少什么?

为了不覆盖现有的files/content,可以使用子路径挂载现有Container文件系统中的testdir目录(下例)。

 volumeMounts:
  - name: node-volume
    mountPath: /node-test/testdir
    subPath: testdir
volumes:
- name: node-volume
  persistentVolumeClaim:
    claimName: node-volume-claim

您可以在此处找到更多信息using-subpath