【发布时间】:2021-11-18 17:35:44
【问题描述】:
我在 kubernetes 中创建了一个 cronjob 来定期备份我的 postgresql 数据库(假设我已经创建了 PGPASS Secret):
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: postgres-backup-dev
spec:
# Backup the database every day at 2AM
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: postgres-backup-dev
image: postgres:10.4
command: ["/bin/sh"]
args: ["-c", 'echo "$PGPASS" > /root/.pgpass && chmod 600 /root/.pgpass && pg_dump -Fc -h <host> -U <user> <db> > /var/backups/backup.dump']
env:
- name: PGPASS
valueFrom:
secretKeyRef:
name: dev-pgpass
key: pgpass
volumeMounts:
- mountPath: /var/backups
name: postgres-backup-storage
restartPolicy: Never
volumes:
- name: postgres-backup-storage
hostPath:
path: /var/volumes/postgres-backups
type: DirectoryOrCreate
这可行,但它会将备份文件转储到由 Cronjob 创建的作业的容器中。 我的目标是将这个文件转储到我原始数据库的容器中。我原来的数据库部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
labels:
app: postgres
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:10.4
imagePullPolicy: Always
resources:
requests:
cpu: "1"
memory: "1Gi"
limits:
cpu: "2"
memory: "2Gi"
ports:
- containerPort: 5432
protocol: TCP
envFrom:
- configMapRef:
name: postgres-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: postgres-pv-claim
有什么办法可以做到吗?
谢谢
【问题讨论】:
-
嗨 @f.bele,Marco Caberletti answer your question 的回答是吗?
-
我在这篇文章https://stackoverflow.com/q/70023193/3142368中找到了满足我需求的解决方案@
-
谢谢@f.bele,您发送的解决方案与 Marco Caberletti 的回答中提供的不同,所以我有一个问题,您接受了这个 Marco 的回答,您测试了吗?它对你有用吗?
标签: postgresql kubernetes