我有一个场景,当我的集群由两个微服务组成时。在服务A中,我有.CSV(15MB)文件,服务B中也需要该文件。我不想在每个存储库中放置该文件两次。在部署服务A期间,我想将此.csv文件放置在某种共享卷中,包含服务B的pod可以使用和处理它。有什么想法和最佳实践吗?最好的问候
ftf50wuq1#
最简单的解决方案是将文件构建到docker镜像中。
w8rqjzmb2#
如果你需要既可以读写文件的微服务,那么你需要一个支持ReadWriteMany accessMode的sharedStorage。Kubernetes中有几个选项,比如:
ReadWriteMany
sharedStorage
你可以找到更多关于这个主题here。另一个解决方案是使用s3这样的对象存储。
s3
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可以同时连接和使用的共享文件系统。**ReadWriteMany或ReadOnlyMany**选项。
是用于上述场景非常好的选择。
3条答案
按热度按时间ftf50wuq1#
最简单的解决方案是将文件构建到docker镜像中。
w8rqjzmb2#
如果你需要既可以读写文件的微服务,那么你需要一个支持
ReadWriteMany
accessMode的sharedStorage
。Kubernetes中有几个选项,比如:你可以找到更多关于这个主题here。
另一个解决方案是使用
s3
这样的对象存储。deyfvvtc3#
如果您不想在docker镜像中设置,可以在POD启动时使用initcontainer下载,在服务A启动时将文件设置到hostPath中。
当你说service Ahas file时,不确定它是在repo中还是在Docker imagebuild中。如果不是repo的一部分,并且它存储在某个中心位置,比如Bucket,你可以在service B启动initcontainer时下载它。
下载文件并将& share设置为hostpath的示例:
另一个选项是设置多个POD可以同时连接和使用的共享文件系统。**ReadWriteMany或ReadOnlyMany**选项。
是用于上述场景非常好的选择。