chown:/var/lib/postgresql/data/postgresql.conf:只读文件系统

时间:2018-08-16 20:37:39

标签: postgresql kubernetes google-kubernetes-engine

通过在/var/lib/postgresql/data之后跟随this answer,解决了安装initContainers时的权限问题。

现在我正在尝试将postgresql.conf挂载为卷,并且遇到了类似的许可问题,该问题引发了chown: /var/lib/postgresql/data/postgresql.conf: Read-only file system

我可能会缺少什么?运气不好,我尝试了很多不同的方法。

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: postgres
  labels:
    app: postgres
spec:
  serviceName: postgres
  replicas: 1
  updateStrategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: postgres
    spec:
      terminationGracePeriodSeconds: 10
      initContainers:
      - name: chmod-er
        image: busybox:latest
        command:
        - /bin/chown
        - -R
        - '0'
        - /var/lib/postgresql/data
        volumeMounts:
        - name: postgredb
          mountPath: /var/lib/postgresql/data
        - name: pg-config
          mountPath: /var/lib/postgresql/data/postgresql.conf
          subPath: postgresql.conf
      containers:
        - name: postgres
          image: mdillon/postgis:10-alpine
          ports:
            - containerPort: 5432
          volumeMounts:
            - name: postgredb
              mountPath: /var/lib/postgresql/data
              subPath: data
            - name: pg-config
              mountPath: /var/lib/postgresql/data/postgresql.conf
              subPath: postgresql.conf
      volumes:
        - name: postgredb
          persistentVolumeClaim:
            claimName: postgres-pvc
        - name: pg-config
          configMap:
            name: pg-config
            items:
              - key: postgresql.conf
                path: postgresql.conf

2 个答案:

答案 0 :(得分:3)

从kubernetes 1.8开始,configmap只读安装,摘自CHANGELOG-1.8.md:

  

更改密钥,configMap,downlineAPI和计划的卷以进行挂载   只读,而不是允许应用程序写入数据,然后   自动还原。在1.11版之前,设置功能   Gate ReadOnlyAPIDataVolumes = false将保留旧的行为。   (#58720,@ joelsmith)

如果要更改从configmap挂载的文件,可以将其复制到另一个目录,然后进行更新。

答案 1 :(得分:0)

更新您的实体配置并将只读设置为 false

volumeMounts:
- name: postgredb
  mountPath: /var/lib/postgresql/data
  readOnly: false
- name: pg-config
  mountPath: /var/lib/postgresql/data/postgresql.conf
  subPath: postgresql.conf
  readOnly: false