简体   繁体   中英

Kubernetes Postgres Bus error (core dumped)

I am deploying pgadmin and postgres on kubernetes. When i look at deployments I see that 2 deployments are not ready. When I look at logs of Pgadmin, I see that it gives error as it can not connect to postgres. I use configmap to connect pgadmin to postgres. When I look at logs of postgres I see error.

Logs:

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.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 20
selecting default shared_buffers ... 400kB
selecting default time zone ... Etc/UTC
creating configuration files ... ok
Bus error (core dumped)
child process exited with exit code 135
initdb: removing contents of data directory "/var/lib/postgresql/data"
running bootstrap script ...

yaml file:

#configmap
apiVersion: v1
kind: ConfigMap
metadata:
  name: postgres-configmap
data:
  db_url: postgres-service
---
#postgres
apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres-deployment
  labels:
    app: postgres
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
      - name: postgres
        image: postgres:13.3
        ports:
        - containerPort: 5432
        env:
        - name: POSTGRES_PASSWORD
          valueFrom:
            secretKeyRef:
              name: postgres-secret
              key: postgres-password 
---
apiVersion: v1
kind: Service
metadata:
  name: postgres-service
spec:
  selector:
    app: postgres
  ports:
    - protocol: TCP
      port: 5432
      targetPort: 5432
---
#pgadmin
apiVersion: apps/v1
kind: Deployment
metadata:
  name: pgadmin-deployment
  labels:
    app: pgadmin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: pgadmin
  template:
    metadata:
      labels:
        app: pgadmin
    spec:
      containers:
      - name: pgadmin
        image: dpage/pgadmin4
        ports:
        - containerPort: 49762
        env:
        - name: PGADMIN_DEFAULT_EMAIL
          value: email@email.com
        - name: PGADMIN_DEFAULT_PASSWORD
          value: password
        - name: PGADMIN_LISTEN_ADDRESS
          valueFrom:
            configMapKeyRef:
              name: postgres-configmap
              key: db_url
---
apiVersion: v1
kind: Service
metadata:
  name: pgadmin-service
spec:
  selector:
    app: pgadmin
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 49762
      targetPort: 49762
      nodePort: 30001

After analysing the comments it looks like below resources have been helpful to solve this problem:

  1. How to customize the configuration file of the official PostgreSQL Docker image?
  2. https://github.com/docker-library/postgres/issues/451#issuecomment-447472044

To sum up, editing /usr/share/postgresql/postgresql.conf.sample file while postgres runs inside a container can be done by putting a custom postgresql.conf in a temporary file inside the container and overwriting the default configuration at runtime as described here . Also, keeping a dummy entry point script using "play with kubernetes" websites and then spinning up the container or trying to copy the file to the container might be useful.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM