我创建了一个每60分钟运行一次的cron作业。在作业的容器中,我将emptyDir卷挂载为详细日志。在我的容器中,我在路径上写了一个csv文件detailed-logslogs.csv。
我试图将此文件从pod复制到本地计算机,kubectl cp podname:detailed-logslogs.csv k8slogslogs.csv但它会抛出错误:
未找到路径“detailed-logs logs.csv”(没有此类文件或目录)。
一旦作业成功运行,由作业创建的pod进入completed状态,这可能是一个问题吗?
在您的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"]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。