【问题标题】:K8s doesn't mount files on Persistent VolumeK8s 不在 Persistent Volume 上挂载文件
【发布时间】:2019-02-26 23:58:53
【问题描述】:

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

Dockerfile

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 Dockerfile 中缺少什么?

【问题讨论】:

标签: docker kubernetes persistent-volumes


【解决方案1】:

为了不覆盖现有文件/内容,您可以使用 subpath 将 testdir 目录(在下面的示例中)挂载到现有的 Container 文件系统中。

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

你可以在这里using-subpath找到更多信息

【讨论】:

  • 它实际上复制了目录,但我在其中找不到文件。 :-(
  • Helm stable/wordpress chart 完全按照你说的做,所以它一定是对的。我会做更多的研究
猜你喜欢
  • 2020-07-30
  • 2018-12-25
  • 1970-01-01
  • 2020-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
相关资源
最近更新 更多