【发布时间】:2020-01-31 21:33:55
【问题描述】:
我有一个包含两个容器的 pod。一个容器是一个 Web 应用程序,另一个容器为这个 Web 应用程序存储一些静态数据。
这里的数据是一组文件,它们存储在这个容器的文件夹中,名称为/data,容器的唯一功能是存储这些数据并将它们暴露给网络应用程序。
我正在寻找与此 pod 中的 Web 应用程序容器共享此文件夹内容的方法。
如果我使用的是 YAML 规范,则两个容器中的文件夹都是空的。有没有办法在不清理容器文件夹的情况下共享数据?
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
version: 1.2.3
spec:
volumes:
- name: my-app-data-volume
containers:
- name: my-app-server
image: my-app-server-container-name
volumeMounts:
- name: my-app-data-volume
mountPath: /data
ports:
- containerPort: 8080
- name: my-app-data
image: my-app-data-container-name
volumeMounts:
- name: my-app-data-volume
mountPath: /data
【问题讨论】:
-
为什么不使用特定于静态数据的东西,如 S3、GCS(其他)?那些是静态文件,你为什么要把它们放在一个 pod 中,用每个副本一个又一个地复制它们?
-
这组两个容器是一种测试服务器,应该使用不同的测试数据集。为了实现这一点,我将数据从应用程序容器移动到另一个容器,以便更轻松地切换数据集。使用
docker-compose这很容易,但现在我也应该在 Kubernates 环境中使用它们。 -
请解释这个问题的减号原因。
-
如果您使用一组不应该备份的数据,为什么不使用 init 容器将数据写入 pod 的卷中并将此结果安装到您的容器中?您将保留资源使用情况,生成的 pod 中只有一个容器。
-
如果可以的话,另一个解决方案是使用 configmap?
标签: docker kubernetes docker-volume