X.J*_*X.J 20 postgresql docker kubernetes persistent-volumes aws-ebs
从pod接收错误:
initdb:目录"/ var/lib/postgresql/data"存在但不是空它包含一个lost + found目录,可能是因为它是一个挂载点.建议不要直接使用挂载点作为数据目录.在挂载点下创建一个子目录.
为什么pod无法使用此路径?我在minikube上尝试过相同的测试.我没有遇到任何问题.
那么在Kubernete中使用Aws EBS正确安装postgresql卷的方法是什么,允许重新创建的pod可以重用存储在EBS中的初始数据库?
Con*_*nst 31
那么使用Aws EBS正确挂载postgresql卷的方法是什么呢?
你走在正确的道路上......
你得到的错误是因为你想使用挂载卷的根文件夹/
作为postgresql Data dir和postgresql抱怨说这不是最佳做法,因为它不是空的并且已经包含一些数据(即lost+found
目录).
最好将数据目录放在单独的空子文件夹中(/postgres
例如),并在创建文件结构时给出postgresql clean slate.你没有在minicube上得到同样的东西,因为你很可能安装了没有任何内部的主机文件夹(是空的)并且没有引发这样的抱怨.
要执行此操作,您最初需要清空卷的子路径(/postgres
例如,PV上的空子文件夹),将其安装到/var/lib/posgresql/data
pod中的相应安装点().请注意,您可以将subPath和mount point end文件夹命名为相同的名称,它们在这里是不同的,只是作为将test-db-volume/postgres
文件夹挂载到pod to /var/lib/postgresql/data
folder 的示例:
...
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: test-db-volume
subPath: postgres
...
Run Code Online (Sandbox Code Playgroud)
我通过告诉 postgres 我希望用 PGDATA env 创建数据库的位置来解决这个问题。它创建空目录并初始化数据库。如果你没有这个,那么它假设你想在房间安装目录中创建它对我来说有 postgres 不喜欢的 ;ost+found 目录
containers:
- name: postgres
imagePullPolicy: Always
image: postgres:9.6
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
value: "mydb"
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres-data
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3393 次 |
最近记录: |