gpt4 book ai didi

postgresql - 如何在 Kubernetes 中使用 Aws EBS 挂载 postgresql 卷

转载 作者:IT老高 更新时间:2023-10-28 12:40:54 25 4
gpt4 key购买 nike

  1. 我首先创建了持久卷 (EBS 10G) 和相应的持久卷声明。但是当我尝试如下部署 postgresql pod(yaml 文件)时:

test-postgresql.yaml

从 pod 接收错误:

initdb:目录“/var/lib/postgresql/data”存在但不为空它包含一个 lost+found 目录,可能是因为它是一个挂载点。不建议直接使用挂载点作为数据目录。在挂载点下创建一个子目录。

为什么 pod 不能使用这个路径?我在 minikube 上尝试过相同的测试。我没有遇到任何问题。

  1. 我尝试将卷挂载目录路径更改为“/var/lib/test/data”,Pod 可以运行。我创建了一个新表和一些数据,然后杀死了这个 pod。 Kubernetes 创建了一个新的 pod。但是新的没有保留以前的数据和表格。

那么在 Kubernetes 中使用 Aws EBS 正确挂载 postgresql 卷的方法是什么,这使得重新创建的 pod 可以重用存储在 EBS 中的初始数据库?

最佳答案

So what's the way to correctly mount a postgresql volume using Aws EBS

你走在正确的道路上......

你得到的错误是因为你想使用安装卷的根文件夹 / 作为 postgresql 数据目录和 postgresql 提示这样做不是最佳实践,因为它不是空的并且已经包含一些里面的数据(即lost+found目录)。

最好将数据目录定位在单独的空子文件夹(例如 /postgres)中,并在创建其文件结构时为 postgresql 提供干净的 slate。你在 minicube 上没有得到同样的东西,因为你很可能安装了主机文件夹,里面没有任何东西(是空的)并且没有触发这样的投诉。

为此,您首先需要为空 subPath您的卷(例如,PV 上的空 /postgres 子文件夹)安装到 pod 中适当的安装点 (/var/lib/posgresql/data)。请注意,您可以将 subPath 和挂载点结束文件夹命名为相同的名称,它们在这里有所不同,仅作为 test-db-volume/postgres 文件夹将在 pod 上挂载到 /var 的示例/lib/postgresql/data 文件夹:

...
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: test-db-volume
subPath: postgres
...

关于postgresql - 如何在 Kubernetes 中使用 Aws EBS 挂载 postgresql 卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51168558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com