我解决了挂载/var/lib/postgresql/data
时的一个权限问题,方法是使用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
4条答案
按热度按时间myzjeezk1#
从kubernetes 1.8开始,configmap以只读方式挂载,摘自CHANGELOG-1.8.md:
将secret、configMap、downwardAPI和投影卷更改为只读装载,而不是允许应用程序写入数据,然后自动恢复数据。在版本1.11之前,设置功能门ReadOnlyAPIDataVolumes=false将保留旧的行为。(#58720,@joelsmith)
如果您想更改从configmap挂载的文件,可以将其复制到另一个目录,然后更新它。
qyyhg6bp2#
更新实体配置并将readonly设置为
false
:0md85ypi3#
我使用的解决方案是覆盖我需要的postgresql.conf参数作为容器的命令行参数:
而不挂载修改过的postgresql.conf
来源:https://github.com/docker-library/docs/blob/master/postgres/README.md#database-configuration
kqlmhetl4#
不幸的是,设置
readOnly: false
对我的情况是不够的。要使用“只读文件系统”解决此问题,您必须将
postgresql.conf
挂载到Postgres数据目录以外的目录中(默认情况下为/var/lib/postgresql/data
)尝试以下操作:
注意选择自定义配置的
args
部分。