【发布时间】:2017-11-03 18:02:46
【问题描述】:
我有一个 azure 容器服务 (aks) 集群。它已迁移到版本 1.8.1。我正在尝试部署 postgres 数据库并使用 AzureFileVolume 来持久化 postgres 数据。
默认情况下,如果我在没有挂载卷的情况下部署 postgres 数据库,则一切正常,即创建 pod 并初始化数据库。
当我尝试使用下面的 yaml 挂载卷时,我得到 initdb: could not access directory "/var/lib/postgresql/data": Permission denied。
我尝试了长篇 github thread 中建议的各种 hack,例如:为 pod 设置安全上下文或在 initContainers 中运行 chown 命令。结果是一样的——权限被拒绝。
任何想法都将不胜感激。
apiVersion: v1
kind: Service
metadata:
labels:
app: myapp
component: test-db
name: test-db
spec:
ports:
- port: 5432
selector:
app: myapp
component: test-db
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test-db
spec:
template:
metadata:
labels:
app: myapp
component: test-db
spec:
securityContext:
fsGroup: 999
runAsUser: 999
containers:
- name: test-db
image: postgres:latest
securityContext:
allowPrivilegeEscalation: false
ports:
- containerPort: 5432
env:
- name: POSTGRES_DB
value: myappdb
- name: POSTGRES_USER
value: myappdbuser
- name: POSTGRES_PASSWORD
value: qwerty1234
volumeMounts:
- name: azure
mountPath: /var/lib/postgresql/data
volumes:
- name: azure
azureFile:
secretName: azure-secret
shareName: acishare
readOnly: false
【问题讨论】:
-
您指定了
runAsUser: 999,但请记住所有 Docker 卷都将是 mounted as root。这可能会导致权限问题。另外,我发现 kubernetes 有时会重新挂载卷,因此初始的chmod可能不够。
标签: postgresql azure kubernetes azure-storage azure-container-service