Postgresql

控制多個 Kubernetes 服務之間共享的 PD 的訪問權限

  • August 11, 2016

我有一個在兩個 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 鏡像的Dockerfilepostgres明確設置了 GID 999。

引用自:https://serverfault.com/questions/795205