在Kubernetes中使用容器存储/共享数据

时间:2018-12-06 18:21:56

标签: docker kubernetes

我已经将需要使用多个CSV(〜2gb)的python项目进行泊坞处理。为了减小图像大小,我没有在构建中包括CSV,而是选择通过卷将容器外部目录中的数据提供给正在运行的容器。在本地,通过docker运行时,我可以做

docker run -v ~/local/path/:/container/path my-image:latest

这有效,但是我不确定如何在Kubernetes中进行此操作。我一直在阅读文档,对卷类型的数量,应存储实际CSV的位置等感到困惑。

根据我提供的项目信息,有明显的解决方案吗?

2 个答案:

答案 0 :(得分:1)

如果您想从Docker复制该确切行为,最常见的方法是使用hostPath。像这样:

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: my-image:latest
    name: my-container
    volumeMounts:
    - mountPath: /container/path
      name: test-volume
  volumes:
  - name: test-volume
    hostPath:
      path: /usr/local/path
      type: Directory

答案 1 :(得分:0)

这是容器之间共享的典型示例。您可以将数据保存在单独的容器中,而将代码保存在其他容器中。

https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/

apiVersion: v1
kind: Pod
metadata:
  name: two-containers
spec:

  restartPolicy: Never

  volumes:
  - name: shared-data
    emptyDir: {}

  containers:

  - name: nginx-container
    image: nginx
    volumeMounts:
    - name: shared-data
      mountPath: /usr/share/nginx/html

  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: ["/bin/sh"]
    args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]

希望有帮助。