Kha*_*Meg 2 postgresql kubernetes persistent-volumes pgadmin-4
我想将用户帐户和其他设置保存在 pgadmin4 k8s 实例的卷中,我这样做了:
apiVersion: apps/v1
kind: Deployment
metadata:
name: pgadmin
namespace: pgadmin
spec:
selector:
matchLabels:
app: pgadmin
replicas: 1
template:
metadata:
labels:
app: pgadmin
spec:
containers:
- name: pgadmin4
image: dpage/pgadmin4
env:
- name: PGADMIN_DEFAULT_EMAIL
value: "admin@example.com"
- name: PGADMIN_DEFAULT_PASSWORD
value: "mysecpwd"
- name: PGADMIN_PORT
value: "80"
ports:
- containerPort: 80
name: pgadminport
volumeMounts:
- mountPath: /
name: pgadmin-storage
volumes:
- name: pgadmin-storage
persistentVolumeClaim:
claimName: pgadmin-pv-claim
---
kind: PersistentVolume
apiVersion: v1
metadata:
name: pgadmin-pv-volume
namespace: pgadmin
labels:
type: local
app: pgadmin
spec:
storageClassName: manual
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/mnt/data"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pgadmin-pv-claim
namespace: pgadmin
labels:
app: pgadmin
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
Run Code Online (Sandbox Code Playgroud)
问题是当我重新启动 pod 时,即使 pv 绑定到 pod,创建的用户也会消失,我不确定这一部分:
volumeMounts:
- mountPath: /
name: pgadmin-storage
Run Code Online (Sandbox Code Playgroud)
我想我必须指定保存用户信息和设置的目录,我尝试了默认目录,/pgadmin4但 pod 崩溃了。
根据 @Wytrzyma\xc5\x82y 答案,我检查了使用 helm 创建的部署,发现正确的mountPath是/var/lib/pgadmin,该部分应该如下所示:
...\n volumeMounts:\n - mountPath: /var/lib/pgadmin\n name: pgadmin-storage\n ...\nRun Code Online (Sandbox Code Playgroud)\n另一件事是我必须更改该目录的所有者,以便应用程序可以写入它,我InitContainers为此使用了(pgadmin uid = 5050):
...\nspec:\n initContainers:\n - name: volume-mount-hack\n image: busybox\n command: ["sh", "-c", "chown -R 5050:5050 /var/lib/pgadmin"]\n volumeMounts:\n - name: pgadmin-storage\n mountPath: /var/lib/pgadmin\n....\nRun Code Online (Sandbox Code Playgroud)\n希望这可以帮助别人
\n