通过在/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
答案 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