【发布时间】:2019-01-31 15:15:01
【问题描述】:
我正在使用 minikube 在本地运行 kubernetes。我的本地 k8s 有两个 pod,其中一个是 PostgreSQL,另一个是我自己的应用程序。我已经安装了 PersistentVolume 和 PersistentVolumeClaim 以便为 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 是空的,就像 minikube 主机中的 /data/psql 一样。
有人可以帮忙吗?
【问题讨论】:
-
您是否尝试过进入 minikube 节点并检查该目录是否具有正确的权限,例如 kubernetes.io/docs/tasks/configure-pod-container/… ?
-
你在 virtualbox 中运行 minikube 吗?
-
@NicolaBen 是的,我正在使用 VirtualBox 驱动程序。
-
@RyanDawson 正确的权限是什么意思?
-
我会为所有用户完全读写 - chmod 777
标签: postgresql docker kubernetes minikube