我正在运行minikube v0.24.1.在这个minikube中,我将为我的nginx应用程序创建一个Pod.而且我想从本地目录传递数据.
这意味着我想将我的本地安装$HOME/go/src/github.com/nginx到我的Pod中
我怎样才能做到这一点?
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx:0.1
name: nginx
volumeMounts:
- mountPath: /data
name: volume
volumes:
- name: volume
hostPath:
path: /data
Run Code Online (Sandbox Code Playgroud) 我使用 1.11 版的 k8s 和 CephFS 作为存储。
我正在尝试挂载在 pod 中的 CephFS 上创建的目录。为了达到同样的目的,我在部署配置中编写了以下卷和卷挂载配置
体积
{
"name": "cephfs-0",
"cephfs": {
"monitors": [
"10.0.1.165:6789",
"10.0.1.103:6789",
"10.0.1.222:6789"
],
"user": "cfs",
"secretRef": {
"name": "ceph-secret"
},
"readOnly": false,
"path": "/cfs/data/conf"
}
}
Run Code Online (Sandbox Code Playgroud)
卷挂载
{
"mountPath": "/opt/myapplication/conf",
"name": "cephfs-0",
"readOnly": false
}
Run Code Online (Sandbox Code Playgroud)
安装工作正常。我可以看到 ceph 目录,即 /cfs/data/conf 被挂载在 /opt/myapplication/conf 上,但以下是我的问题。
我的配置文件已经作为 docker 镜像的一部分出现在 /opt/myapplication/conf 位置。当部署尝试挂载 ceph 卷时,位于 /opt/myapplication/conf 位置的所有文件都会消失。我知道这是挂载操作的行为,但是有什么方法可以将容器中已经存在的文件保留在我正在挂载的卷上,以便挂载相同卷的其他 pod 可以访问配置文件。即 pod 中位于 /opt/myapplication/conf 位置的文件应该可以在位置 /cfs/data/conf 的 CephFS 上访问。
是否可以?
我浏览了 docker 文档,它提到
使用容器填充一个卷如果你启动一个创建新卷的容器,如上,并且容器在要挂载的目录中有文件或目录(如上面的/app/),目录的内容被复制到卷中. 然后容器安装并使用该卷,使用该卷的其他容器也可以访问预先填充的内容。
这符合我的要求,但如何使用 k8s …