When gitlab was recently deployed on k8s, the underlying storage used CEPH. As a result, PostgreSQL encountered the following error:
$ 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 file:
# 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
Solution: add a subpath parameter in volumemounts
volumeMounts:
- name: postgresql
mountPath: /var/lib/postgresql/data
subPath: data
Similar Posts:
- PostgreSQL Connect Error: FATAL: no pg_hba.conf entry for host
- Solution to pod error “back off restarting failed container”
- An error prompt appears during the installation of win10 PostgreSQL: “failed to load SQL modules into the database cluster”
- [Solved] createdb: could not connect to database postgres: FATAL: Peer authentication failed for user “postgres”
- [Solved] PSQL: fatal: the database system is starting up
- The newly deployed k8s cluster of the virtual machine reports an error when executing kubectl logs and exec
- [How to Solve] psql: FATAL: role “postgres” does not exist
- [Solved] zabbix Monitor postgres Error: “sh:psql command not found”
- K8S Error: no metrics known for node [How to Solve]
- Gitlab Access error Whoops, GitLab is taking too much time to respond