Postgresql
控制多個 Kubernetes 服務之間共享的 PD 的訪問權限
我有一個在兩個 Kubernetes 服務之間共享的 PD。一旦服務在目前容器內執行伺服器應用程序
root
(我可能會將其更改為,比如說,user1
),另一個服務執行 Docker 的Postgres 映像為postgres
. 我想確保root
(最終user1
)和postgres
對 PD 掛載點下方的某些目錄具有讀寫訪問權限,例如postgres
應該“擁有”該目錄/mnt/disk/my-pd/pgdata
。這可以在 Kubernetes 規範級別進行配置嗎?如果不是,並且如果我必須在“外部”手動配置它,我是否可以假設 UID 和 GID 在整個集群中如何相互關聯,即 Kubernetes(或標準 Docker 映像,例如
postgres
)是否包含某種目錄服務將保持UID 例如postgres
在整個集群中同步?這是我的規範中與 Postgres 相關的部分的目前形式:
kind: Deployment apiVersion: extensions/v1beta1 metadata: name: postgres-deployment spec: template: metadata: labels: app: postgres-app spec: containers: - name: postgres-container image: postgres env: - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: my-secret key: postgres-password.txt - name: PGDATA value: /mnt/disk/my-pd/pgdata - name: POSTGRES_DB value: mydb ports: - protocol: TCP containerPort: 5432 volumeMounts: - name: my-volume mountPath: /mnt/disk/my-pd volumes: - name: my-volume gcePersistentDisk: pdName: my-pd fsType: ext4
該解決方案包括指定引用 GID 999(附加到原始規範)的安全上下文:
securityContext: fsGroup: 999
官方Docker 鏡像的Dockerfile
postgres
明確設置了 GID 999。