2017-06-09 67 views
1
  • 我有Azure機器(kubernetes)有2核心,1 GB的代理。我的兩臺服務在本機上運行,​​每臺服務都有自己的Postgres(Deplyment,Service,Pv,PVC)。
  • 我想在同一臺機器上託管我的第三項服務。
  • 所以當我試圖創建Postgres部署(這也有自己的服務,光伏,PVC),但波德卡在status=ContainerCreating
  • 經過一番挖掘,我得知我的​​只支持data-disks

所以我想,爲什麼在當前的服務沒有使用早期部署的PVC像:我們可以在kubernetes的相同持久卷中創建多個數據庫嗎?

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: third-postgres 
    labels: 
    name: third-postgres 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     name: third-postgres 
    spec: 
     containers: 
     - name: third-postgres 
     image: postgres 
     env: 
      - name: PGDATA 
      value: /var/lib/postgresql/data/pgdata 
      - name: POSTGRES_USER 
      value: third-user 
      - name: POSTGRES_PASSWORD 
      value: <password> 
      - name: POSTGRES_DB 
      value: third_service_db 
     ports: 
      - containerPort: 5432 
     volumeMounts: 
     - name: third-postgresdata 
     mountPath: /var/lib/postgresql/data 
    volumes: 
    - name: third-postgresdata 
    persistentVolumeClaim: 
     claimName: <second-postgres-data> 
  • 現在這個部署成功運行,但它不會創建新的數據庫third_service_db
  • 可能因爲第二個PVC已經存在,所以它跳過了Db創建部分?
  • 所以他們的任何方式我可以使用相同的PVC爲我的所有服務和PVC可以有多個數據庫。所以,當我運行kubectl create -f <path-to-thirst-postgres.yaml>它從ENV變量名稱數據庫配置和相同PVC
+0

PVC用於請求PV,因此當您創建部署(第三服務)時,它會嘗試爲您配置一個* NEW * PV,並且狀態= ContainerCreating可能表明提供失敗。你可以檢查你的存儲類嗎? –

回答

0

創建DB你必須創建每個部署下的一個PVC。一旦PVC 聲稱,它必須釋放,然後才能再次使用。

在AzureDisk的情況下,自動創建的卷只能通過單個節點(ReadWriteOnce接入方式)安裝得有一個約束了:每個部署最多有副本。

相關問題