在Kubernetes中在本地和Docker容器之间共享数据

时间:2020-08-03 14:04:12

标签: docker kubernetes kubernetes-cronjob microk8s

我能够使用

成功地在docker容器和主机之间共享数据
docker run -it -v /path/to/host/folder:/container/path image-name

现在,我正在尝试每分钟通过Kubernetes cronjob运行此docker映像,为此我的yaml文件如下:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: automation
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: automation
            image: localhost:32000/image-name:registry  
          restartPolicy: OnFailure

但是在这里,我如何在本地和k8之间共享数据,以便基本上从docker run命令复制-v /path/to/host/folder:/container/path功能? 我应该在yaml文件中添加什么?

请帮助。

1 个答案:

答案 0 :(得分:1)

如果您只是在玩一个节点,并且需要将卷从该节点映射到在同一节点中运行的Pod,则需要使用hostPath volume。 br /> 总之,您的代码将如下所示:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: automation
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: automation
            image: localhost:32000/image-name:registry  
            volumeMounts:
            - mountPath: /container/path
              name: test-volume
          restartPolicy: OnFailure
          volumes:
          - name: test-volume
            hostPath:
              # directory location on host
              path: /path/to/host/folder
              # this field is optional
              type: Directory

警告,仅当您只有一个一个节点群集时,此选项才有效。

如果您具有多节点集群,则需要了解分布式存储解决方案以及如何将它们与kubernetes结合使用。

这里是doc about volumes in K8S