postgresql - 将本地 docker 卷挂载到 kubernetes pod
问题描述
我正在尝试在 microk8s kubernetes 集群上启动一个 postgres pod。目前,包含所有数据的 postgres 容器在主机上本地启动。
问题是:是否可以将当前卷(从本地 docker 卷)映射到 kubernetes pod 部署?
我曾经将 Kubernetes 部署kompose
转换docker-compose.yml
为适当的.yaml
文件。
上述命令kompose
创建postgres-deployment.yaml
、postgres-service.yaml
和 2 persistantvolumeclaims
(从 docker-compose 中映射的卷中,一个用于 pg_data,另一个用于 init_db 脚本)。
我是否需要在自动生成的PersistantVolume
映射旁边生成映射以及它们的外观?PersistantVolumeClaims
kompose
编辑:使用下面的 yaml,我为 postgres 容器制作了 2volumes
和 2 volumeclaims
,为 init_db 脚本制作了数据 1。运行它然后公开服务端点是有效的。警告:因为数据库在 docker 主机容器和 kubernetes pod 上运行,同时发生数据损坏。
kind: PersistentVolume
apiVersion: v1
metadata:
name: postgres-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/var/lib/docker/volumes/dummy_pgdata/_data"
解决方案
发布社区 wiki 以获得更好的可见性。随意扩展它。
通过定义自定义 PersistentVolume并设置如下,可以storageClassName
与Kubernetes pod 共享相同的 docker 卷:hostPath
storageClassName: manual
hostPath:
path: "/var/lib/docker/volumes/{docker-volume}"
但是,不可能在不同的 Postgres 安装之间共享相同的 Postgres 数据文件。它可能会导致数据损坏。检查此答案以获取更多详细信息。
推荐阅读
- python - 列表子类的 Python 类型
- c - 我一直在这里遇到分段错误。在这里待了4个小时
- performance - 在 Allegro 5 中绘制许多图元的最快方法
- java - 试图打印出 100 个奇数
- php - PHP For循环不读取文件
- excel-formula - Excel - 计算两个日期之间每个月的工作日
- azure-devops - Azure DevOps 查询状态更改日期 - 结果不包括自定义 WIT
- java - 使用注释为 Google guice MapBinder 提供数据
- mysql - 为什么sql函数返回全部计数和单选返回正确值?
- javascript - 项目的唯一点击