开发者社区> 问答> 正文

将文件从cron作业的pod复制到AKS中的本地目录

k8s小能手 2019-02-22 15:33:56 347

我创建了一个每60分钟运行一次的cron作业。在作业的容器中,我将emptyDir卷挂载为详细日志。在我的容器中,我在路径上写了一个csv文件detailed-logslogs.csv。

我试图将此文件从pod复制到本地计算机,kubectl cp podname:detailed-logslogs.csv k8slogslogs.csv但它会抛出错误:

未找到路径“detailed-logs logs.csv”(没有此类文件或目录)。

一旦作业成功运行,由作业创建的pod进入completed状态,这可能是一个问题吗?

Perl 容器
分享到
取消 提交回答
全部回答(1)
  • k8s小能手
    2019-07-17 23:29:07

    在您的pod完成运行后,您引用的文件将不会保留。您可以做的是在cron作业运行时备份文件。我建议的两个解决方案是将持久卷附加到作业窗格,或者在运行作业时将文件上载到某处。

    使用一个持续的卷

    在这里,您可以通过快速readWriteOnce持久卷声明创建PV :

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
    name: my-pvc
    spec:
    accessModes:

    - ReadWriteOnce

    resources:

    requests:
      storage: 5Gi

    然后,您可以使用以下方法将其安装到pod上:

      ...
        volumeMounts:
        - name: persistent-storage
          mountPath: /detailed-logs
      volumes:
      - name: persistent-storage
        persistentVolumeClaim:
          claimName: my-pvc
      ...

    上传文件

    我这样做是在已aws-cli安装的容器中运行作业,然后将我的文件存储在AWS S3上,您可以选择另一个平台:

    apiVersion: v1
    kind: ConfigMap
    metadata:
    name: backup-sh
    data:
    backup.sh: |-

    #!/bin/bash
    aws s3 cp /myText.txt s3://bucketName/

    apiVersion: batch/v1beta1
    kind: CronJob
    metadata:
    name: s3-backup
    spec:
    schedule: "0 0 *"
    jobTemplate:

    spec:
      template:
        spec:
          containers:
          - name: aws-kubectl
            image: expert360/kubectl-awscli:v1.11.2
            env:
            - name: AWS_ACCESS_KEY_ID
              valueFrom:
                secretKeyRef:
                  name: s3-creds
                  key: access-key-id
            - name: AWS_SECRET_ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: s3-creds
                  key: secret-access-key
            command:
              - /bin/sh
              - -c
            args: ["sh /backup.sh"]
    0 0
+ 订阅

云原生时代,是开发者最好的时代

推荐文章
相似问题
推荐课程