0

我成功地能够使用 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

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

请帮忙。

4

1 回答 1

1

如果你只是在玩一个节点并且需要从这个节点映射一个卷到在同一个节点上运行的一个 pod,那么你需要使用一个hostPath 卷
总之,您的代码将如下所示:

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 一起使用。

这是关于 K8S 中卷的文档

于 2020-08-03T14:13:53.650 回答