zoukankan      html  css  js  c++  java
  • k8s 部署 postgresql 报错:initdb: error: directory "/var/lib/postgresql/data" exists but is not empty

    最近在 k8s 上部署 gitlab 时,底层存储使用的是 ceph,结果 postgresql 遇到以下报错:

    $ kubectl -n gitlab logs postgresql-76d969dd56-m79wm
    The files belonging to this database system will be owned by user "postgres".
    This user must also own the server process.
    
    The database cluster will be initialized with locale "en_US.utf8".
    The default database encoding has accordingly been set to "UTF8".
    The default text search configuration will be set to "english".
    
    Data page checksums are disabled.
    
    initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
    It contains a lost+found directory, perhaps due to it being a mount point.
    Using a mount point directly as the data directory is not recommended.
    Create a subdirectory under the mount point.
    

    postgresql yaml 文件:

    # pv
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: postgresql-ceph-pvc
      namespace: gitlab
    spec:
      storageClassName: ceph-leffss
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
     
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: postgresql
      namespace: gitlab
      labels:
        app: gitlab
        tier: postgreSQL
    spec:
      ports:
        - port: 5432
      selector:
        app: gitlab
        tier: postgreSQL
    
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: postgresql
      namespace: gitlab
      labels:
        app: gitlab
        tier: postgreSQL
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: gitlab
          tier: postgreSQL
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            app: gitlab
            tier: postgreSQL
        spec:
          #nodeSelector:
          #  gee/disk: "500g"
          containers:
            - image: hub.leffss.com/library/postgres:12.6-alpine
            #- image: harbor.boge.com/library/postgres:12.6-alpine
              name: postgresql
              env:
                - name: POSTGRES_USER
                  value: gitlab
                - name: POSTGRES_DB
                  value: gitlabhq_production
                - name: POSTGRES_PASSWORD
                  value: bogeusepg
                - name: TZ
                  value: Asia/Shanghai
              ports:
                - containerPort: 5432
                  name: postgresql
              livenessProbe:
                exec:
                  command:
                  - sh
                  - -c
                  - exec pg_isready -U gitlab -h 127.0.0.1 -p 5432 -d gitlabhq_production
                initialDelaySeconds: 110
                timeoutSeconds: 5
                failureThreshold: 6
              readinessProbe:
                exec:
                  command:
                  - sh
                  - -c
                  - exec pg_isready -U gitlab -h 127.0.0.1 -p 5432 -d gitlabhq_production
                initialDelaySeconds: 20
                timeoutSeconds: 3
                periodSeconds: 5
    #          resources:
    #            requests:
    #              cpu: 100m
    #              memory: 512Mi
    #            limits:
    #              cpu: "1"
    #              memory: 1Gi
              volumeMounts:
                - name: postgresql
                  mountPath: /var/lib/postgresql/data
          volumes:
            - name: postgresql
              persistentVolumeClaim:
                claimName: postgresql-ceph-pvc
    
    

    解决方法:volumeMounts 中新增 subPath 参数

      volumeMounts:
        - name: postgresql
          mountPath: /var/lib/postgresql/data
          subPath: data
    

    参考:postgresql - How to have data persist in GKE kubernetes StatefulSet with postgres? - Stack Overflow

  • 相关阅读:
    js+servlet实现百度搜索栏下拉框的实现
    python time模块
    dajngo基础
    MySQL解决时区问题:datadrip com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
    数据库连接池
    超星学习通绕开鼠标监控的方法
    centos7 安装python3
    docker命令
    爬虫一
    学习python的第九天笔记
  • 原文地址:https://www.cnblogs.com/leffss/p/15627754.html
Copyright © 2011-2022 走看看