kubernetes 部署期间在两个不同pod之间共享的文件

z9ju0rcb  于 2023-03-29  发布在  Kubernetes
关注(0)|答案(3)|浏览(229)

我有一个场景,当我的集群由两个微服务组成时。
在服务A中,我有.CSV(15MB)文件,服务B中也需要该文件。我不想在每个存储库中放置该文件两次。
在部署服务A期间,我想将此.csv文件放置在某种共享卷中,包含服务B的pod可以使用和处理它。有什么想法和最佳实践吗?
最好的问候

ftf50wuq

ftf50wuq1#

最简单的解决方案是将文件构建到docker镜像中。

w8rqjzmb

w8rqjzmb2#

如果你需要既可以读写文件的微服务,那么你需要一个支持ReadWriteMany accessMode的sharedStorage。Kubernetes中有几个选项,比如:

  • NFS
  • 头孢噻呋
  • 格吕斯特夫

你可以找到更多关于这个主题here
另一个解决方案是使用s3这样的对象存储。

deyfvvtc

deyfvvtc3#

如果您不想在docker镜像中设置,可以在POD启动时使用initcontainer下载,在服务A启动时将文件设置到hostPath中。
当你说service Ahas file时,不确定它是在repo中还是在Docker imagebuild中。如果不是repo的一部分,并且它存储在某个中心位置,比如Bucket,你可以在service B启动initcontainer时下载它。
下载文件并将& share设置为hostpath的示例:

apiVersion: v1
kind: Pod
metadata:
  name: init-demo
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
    volumeMounts:
    - name: save-data
      mountPath: /data-dir
  initContainers:
  - name: install
    image: ubuntu
    command: ['curl', 'download-link-path >', '/tmp/file.csv']
    volumeMounts:
    - name: save-data
      mountPath: "/data-dir"
  dnsPolicy: Default
  volumes:
  - name: save-data
    hostPath:
      path: /data-dir
      type: Directory

另一个选项是设置多个POD可以同时连接和使用的共享文件系统。**ReadWriteManyReadOnlyMany**选项。

是用于上述场景非常好的选择。

相关问题