相关疑难解决方法(0)

如何在Kubernetes中模仿'--volumes-from'

我正在寻找一种模式,允许在Kubernetes的同一个pod上运行的两个容器之间共享卷.

我的用例是:我在docker容器中运行了一个Ruby on Rails应用程序.docker镜像包含/app/<app-name>/public目录中的静态资源,我需要从同一pod中运行的nginx容器访问这些资源.

在"vanilla"docker中,我会用--volumes-fromflag来共享这个目录:

docker run --name app -v /app/<app-dir>/public <app-image>
docker run --volumes-from app nginx
Run Code Online (Sandbox Code Playgroud)

阅读此文档后: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
Run Code Online (Sandbox Code Playgroud)

但:

  • 即使/tmp/assets节点存在,它也是空的
  • /app/<app-name>/public app容器内部也是空的

作为一种解决方法,我将尝试在应用程序容器启动时填充共享目录(仅限cp /app/<app-name>/public/*于共享目录),但我真的不喜欢这个想法.

问题:如何模仿--volumes-fromKubernetes,或者如果没有直接对应物,我如何将文件从一个容器共享到另一个容器中运行?

apiVersion: v1beta3

Client Version: version.Info{Major:"0", Minor:"17", GitVersion:"v0.17.0", …
Run Code Online (Sandbox Code Playgroud)

docker kubernetes google-kubernetes-engine

44
推荐指数
2
解决办法
2万
查看次数