如何解决kubernetes上的pgadmin4:将用户和设置保存在一个卷中
我想将用户帐户和其他设置保存在pgadmin4 k8s实例的卷中,我这样做是
from enum import Enum
class YourEnumName(Enum):
x1 = "1X"
x2 = "2X"
问题是,当我重新启动Pod时,即使将PV绑定到Pod,创建的用户也会消失,我不确定此部分:
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
我认为我必须指定保存用户信息和设置的目录,我尝试使用默认目录 volumeMounts:
- mountPath: /
name: pgadmin-storage
,但pod崩溃了。
解决方法
我建议使用this helm chart安装pgAdmin。有了它,您将能够配置持久数据的方式:
禁用:数据无法在Pod终止后幸存。
持久卷声明(默认):Kubernetes集群中需要默认的StorageClass来动态设置卷。指定 storageClass中的另一个StorageClass或如果您设置了现存的声明 已经存在要使用的永久卷。
另外,可以调整pgAdmin图表的一些可配置参数,以便配置持久性选项:
,
persistence.enabled
:是否启用数据持久性
persistence.existingClaim
:提供一个现有的PersistentVolumeClaim,该值作为模板进行评估
persistence.storageClass
:PostgreSQL卷的PVC存储类
persistence.accessMode
:卷的访问模式
persistence.size
:卷的大小
基于@Wytrzymały答案,我检查了使用头盔创建的部署,发现正确的mountPath
是/var/lib/pgadmin
,该部分应如下所示:
...
volumeMounts:
- mountPath: /var/lib/pgadmin
name: pgadmin-storage
...
另一件事是我必须更改该目录的所有者,以便应用程序可以写入该目录,为此我使用了InitContainers
(pgadmin uid = 5050):
...
spec:
initContainers:
- name: volume-mount-hack
image: busybox
command: ["sh","-c","chown -R 5050:5050 /var/lib/pgadmin"]
volumeMounts:
- name: pgadmin-storage
mountPath: /var/lib/pgadmin
....
希望这可以帮助某人
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。