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

标签 postgresql azure kubernetes persistent-storage kubectl

  • 我有 Azure 机器 (kubernetes),其代理为 2 核、1 GB。我的两个服务在这台机器上运行,每个服务都有自己的 Postgres(部署、服务、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已经存在,所以它跳过数据库创建部分?
  • 他们有什么办法我可以使用相同的PVC对于我的所有服务和相同PVC可以有多个数据库。所以当我运行kubectl create -f <path-to-thirst-postgres.yaml>时它从环境变量中获取名称数据库配置并在相同的 PVC 中创建数据库

最佳答案

您必须为每个部署创建一个 PVC。一旦 PVC 被认领,就必须将其释放才能再次使用。

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

关于postgresql - 我们可以在 kubernetes 中的同一个持久卷中创建多个数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44456660/

相关文章:

postgresql - Postgis - 如何简化多边形的起点

SQL获取整数后两位

azure - V2 Azure Function ServiceBusTrigger 不工作

php - PDO 与 Azure PostgreSQL 建立连接非常慢

docker - 当另一个 pod 发生更改时重新启动 Kubernetes pod

sql - 你如何确定Postgresql中一列的平均总数?

c - PostgreSQL PqGetValue char 到 c 编程中的整数

c# - Blazor - app.UseIdentityServer();使用 .pfx key 文件 - 解析数字时遇到意外字符

azure - 如何编写 docker 镜像开发来为 Azure 容器注册表暂存升级脚本?

kubernetes - 如何使用文件升级 Helm Chart 部署