2017-06-09 28 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接入方式)安装得有一个约束了:每个部署最多有副本。

相关问题