- 我有 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/