postgresql - 如何在 Kubernetes 中挂载 PostgreSQL 数据目录?
问题描述
我正在使用 minikube 在本地运行 kubernetes。我的本地 k8s 有两个 pod,其中一个是 PostgreSQL,另一个是我自己的应用程序。我已经安装了一个PersistentVolume
andPersistentVolumeClaim
以便为 PostgreSQL 制作一个有状态的 pod:
kind: PersistentVolume
apiVersion: v1
metadata:
name: postgres-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/data/psql"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
这是 PostgreSQL 部署 yaml 文件:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
template:
metadata:
labels:
name: postgres
spec:
containers:
- name: postgres
imagePullPolicy: Never
image: postgres:9.6
ports:
- name: postgres
containerPort: 5432
volumeMounts:
- mountPath: /var/lib/postgresql
name: postgres-persistent-storage
volumes:
- name: postgres-persistent-storage
persistentVolumeClaim:
claimName: postgres-pv-claim
问题是 PostgreSQL 服务没有启动,当我运行它的 pod 时会出现这个错误:
Error: /var/lib/postgresql/9.6/main is not accessible; please fix the directory permissions (/var/lib/postgresql/9.6/ should be world readable)
No PostgreSQL clusters exist; see "man pg_createcluster" ... (warning).
我检查了 PostgreSQL pod 内部,发现它/var/lib/postgresql
是空的,就像/data/psql
在 minikube 主机中一样。任何人都可以帮忙吗?
解决方案
推荐阅读
- tensorflow - 如何初始化多类分割的样本权重?
- python - 不连续集合中的 numpy.random.uniform
- javascript - 如何将点击图像的 rel 属性值传递给 vue.js 的方法
- sql-server - 按字符串排序返回错误的顺序
- python - 快速遍历列表、查找重复项和执行计算的方法
- python - 如何在 JSON 文件中创建多个元素
- python - 如何在不删除日志的情况下停止 vscode python 终端?
- angular - Angular 9 中的 mat datepicker 问题?
- angular - Angular 组件 ngClass
- javascript - 正则表达式匹配任意数量的句点