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

  • 相关阅读:
    C#的注释
    为知笔记发布到博客,css设置
    eclipse创建springboot项目的三种方法
    创建maven父项目以及子项目
    C# 快捷键(总结)
    idea 项目转 eclipse项目
    freemarker常见语法大全
    Spring Boot Freemarker特别篇之contextPath【从零开始学Spring Boot
    Spring mvc请求处理流程详解(一)之视图解析
    React+SpringBoot项目部署
  • 原文地址:https://www.cnblogs.com/leffss/p/15627754.html
Copyright © 2011-2022 走看看