我正在寻找一种允许在 Kubernetes 中运行在同一个 pod 上的两个容器之间共享卷的模式。
我的用例是:我有一个在 docker 容器内运行的 Ruby on Rails 应用程序。docker 镜像在/app/<app-name>/public
目录中包含静态资产,我需要从在同一个 pod 中运行的 nginx 容器中访问这些资产。
在 'vanilla' docker 中,我会使用--volumes-from
flag 来共享此目录:
docker run --name app -v /app/<app-dir>/public <app-image>
docker run --volumes-from app nginx
阅读此文档后:https ://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/volumes.md 我尝试了这个(仅显示相关条目):
spec:
containers:
- image: <app-image>
name: <app-name>
volumeMounts:
- mountPath: /app/<app-name>/public
name: assets
- image: nginx
name: nginx
volumeMounts:
- mountPath: /var/www/html
name: assets
readOnly: true
volumes:
- name: assets
hostPath:
path: /tmp/assets
但:
- 即使
/tmp/assets
在节点上存在,它也是空的 /app/<app-name>/public
应用容器内部也是空的
作为一种解决方法,我将尝试在应用程序容器启动时填充共享目录(只是cp /app/<app-name>/public/*
共享目录),但我真的不喜欢这个想法。
问题:如何--volumes-from
在 Kubernetes 中模仿,或者如果没有直接对应物,我如何将文件从一个容器共享到在同一个 pod 中运行的另一个容器?
apiVersion: v1beta3
Client Version: version.Info{Major:"0", Minor:"17", GitVersion:"v0.17.0", GitCommit:"82f8bdac06ddfacf493a9ed0fedc85f5ea62ebd5", GitTreeState:"clean"}
Server Version: version.Info{Major:"0", Minor:"17", GitVersion:"v0.17.0", GitCommit:"82f8bdac06ddfacf493a9ed0fedc85f5ea62ebd5", GitTreeState:"clean"}