【发布时间】:2020-05-19 00:36:52
【问题描述】:
花了几个小时后,我发现 Kubernetes 不支持将相对路径作为挂载路径。我在这里找到了参考mountpath should be absolute,如果是,那么为什么它没有相对路径的能力,有人可以解释一下吗?
Example code:
apiVersion: v1
kind: Pod
metadata:
name: task-pv-pod
spec:
volumes:
- name: task-pv-storage
hostPath:
# directory location on host
# path: "./code" # this is not supporting
path: "/var/www/html/kubernetes/code" # this is supporting
# this field is optional
type: DirectoryOrCreate
containers:
- name: task-pv-container
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: task-pv-storage
上面代码示例中code目录下,我只有一个index.html页面
项目结构截图:
如果我使用path: "./code",则错误显示如下:
Error response from daemon: create ./code: "./code" includes invalid
characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed.
If you intended to pass a host directory, use absolute path.
提前致谢!!
【问题讨论】:
-
相对的意思是从事物的角度来看是相对的。例如,您所在地区的亲戚。当你指定一个路径时,相对地做它是没有意义的,因为你没有任何参考。
-
@suren 这里是一个问题链接,更好的例子github.com/kubernetes/kubernetes/issues/48749
-
@suren 我也更新了我的问题,你能看看吗?
-
您有时会在基于 Docker 的设置中看到从 Docker 外部绑定挂载代码到容器中的设置实际上在 Kubernetes 中无法正常工作。我建议构建一个包含您的代码的映像,然后将其推送到某种注册表(Docker Hub、AWS ECR、Google GCR...)。
-
@DavidMaze 你能给我一个示例指南吗?
标签: kubernetes path