微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

kubernetes上的pgadmin4:将用户和设置保存在一个卷中

如何解决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 举报,一经查实,本站将立刻删除。