1.我首先创建了持久卷(EBS 10G)和对应的持久卷声明。但当我尝试部署PostgreSQL Pod时,如下所示(YAML文件):
从Pod接收错误:
initdb:目录“/var/lib/postgresql/data”存在,但不为空,它包含一个Lost+Found目录,可能是因为它是一个挂载点。不建议将装载点直接用作数据目录。在挂载点下创建一个子目录。
为什么吊舱不能走这条路?我在迷你立方上也做过同样的测试。我没有遇到任何问题。
1.我尝试将卷挂载目录路径更改为/var/lib/test/data,Pod可以运行。我创建了一个新的表和其中的一些数据,然后终止了这个Pod。库伯内特创造了一个新的吊舱。但新版本没有保留以前的数据和表格。
那么,在Kubernete中使用Aws EBS正确挂载PostgreSQL卷的方法是什么,从而允许重新创建的Pod可以重用存储在EBS中的初始数据库?
4条答案
按热度按时间ia2d9nvy1#
那么,使用Aws EBS正确装载PostgreSQL卷的方法是什么呢
你走在一条正确的道路上。
您收到的错误是因为您希望使用已装载卷
/
的根文件夹作为PostgreSQL数据目录,并且PostgreSQL抱怨这样做不是最佳实践,因为它不是空的,并且其中已经包含一些数据(即lost+found
目录)。最好将数据目录放在单独空子文件夹中(例如
/postgres
),并在创建其文件结构时让PostgreSQL从头开始。你在微型立方体上没有得到同样的东西,因为你很可能装载的主机文件夹里面没有任何东西(是空的),也没有触发这样的投诉。为此,最初需要将卷的空的子路径(例如,PV上的空
/postgres
子文件夹)挂载到Pod中的适当挂载点(/var/lib/posgresql/data
)。请注意,您可以将子路径和挂载点结束文件夹命名为相同的名称,它们在此有所不同,仅作为将test-db-volume/postgres
文件夹挂载到pod到/var/lib/postgresql/data
文件夹的示例:yrdbyhpb2#
我修复了这个问题,告诉Postgres我希望使用PGDATA环境在哪里创建数据库。它创建空目录并初始化数据库。如果您没有这个目录,那么它就假定您想要在房间挂载目录中创建它,在我看来,该目录包含Postgres不喜欢的;ost+find目录
cs7cruho3#
这是从码头中心描述..。
PGDATA这个可选变量可用于为数据库文件定义另一个位置,如子目录。缺省值为/var/lib/postgresql/data,但如果您使用的数据卷是文件系统挂载点(如GCE永久磁盘),postgres initdb建议创建子目录(例如/var/lib/postgreSQL/data/pgdata)来包含数据。
因此,再创建一个更深层次的词典,它就会奏效
jdgnovmf4#
使用子路径,如下所述