我们可以在kubernetes中以相同的持久卷创建多个数据库吗?

时间:2017-06-09 11:28:22

标签: postgresql azure kubernetes persistent-storage kubectl

  • 我有Azure机器(kubernetes),其代理为2核,1 GB。我在这台机器上运行的两个服务都有自己的Postgres(Deplyment,Service,Pv,PVC)。
  • 我想在同一台机器上托管我的第三项服务。
  • 因此,当我尝试创建Postgres部署(这也有自己的服务,PV,PVC)但是Pod被卡在status=ContainerCreating
  • 经过一番挖掘,我知道我的VM只支持data-disks

所以我想为什么不在当前服务中使用早期部署的PVC,如:

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中创建数据库

1 个答案:

答案 0 :(得分:0)

您必须为每个部署创建一个PVC。一旦PVC 声明,必须先将其释放,然后才能再次使用。

对于AzureDisk,自动创建的卷只能由单个节点( ReadWriteOnce 访问模式)安装,因此还有一个约束:每个部署都可以有最多 1 副本。