簡體   English   中英

Kubernetes 中 postgres 中持久卷的權限問題

[英]Permission issue with Persistent volume in postgres in Kubernetes

我知道這個問題已經被反復問過但沒有完全回答。 我有一個以 root 用戶身份在使用持久卷的容器中運行的 postgres。 但似乎在容器中安裝時存在權限問題。 容器日志

  `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 /data ... ok
initdb: could not create directory "/data/pg_xlog": Permission denied
initdb: removing contents of data directory "/data"`

持久卷和持久卷聲明:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: store-persistent-volume
  labels:
    app: pgmaster
  namespace: pustakalaya
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: "/library/pgmaster-data"

---

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: store-persistent-volume-claim
  labels:
    app: postgres
  namespace: pustakalaya
spec:
  storageClassName: manual
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 3Gi

和 Pod 文件:

spec:
  selector:
    matchLabels:
      app: pgmaster
  replicas: 1
  template:
    metadata:
      labels:
        app: pgmaster
    spec:
     # initContainers:
     #   - name: chmod-er
     #     image: busybox:latest
     #     command: ['sh', '-c' ,'/bin/chmod -R 777 /data && /bin/chown -R 999:999 /data']
      containers:
        - name: pgmaster
          image: becram/olen-elib-db-master:v5.3.0
          env:
            - name: POSTGRES_DB
              value: pustakalaya
            - name: POSTGRES_USER
              value: pustakalaya_user
            - name: POSTGRES_PASSWORD
              value: pustakalaya123
            - name: PGDATA
              value: /data
            - name: POSTGRES_BACKUP_DIR
              value: /backup
          ports:
            - containerPort: 5432
          volumeMounts:
          - mountPath: /data:rw
            name: pgmaster-volume
#      restartPolicy: Always
      volumes:
       - name: pgmaster-volume
         persistentVolumeClaim:
           claimName: store-persistent-volume-claim

我在使用 Minikube 時遇到了同樣的問題。 我用手動方法解決了它。 由於該文件夾是在運行節點的主機上創建的,因此我通過 ssh 進入集群。 在 Minikube 上,您可以通過以下方式執行此操作:

minikube ssh

接下來找到集群主機上的文件夾,手動更改權限。

chmod -R 777 /myfolder
chown -R 999:999 /myfolder

在此之后,我再次執行清單文件,它運行沒有問題。 因此,要解決此問題,您需要從集群計算機而不是容器更改權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM