Ali*_*yan 3 postgresql docker kubernetes minikube
我正在使用 minikube 在本地运行 kubernetes。我的本地 k8s 有两个 pod,其中一个是 PostgreSQL,另一个是我自己的应用程序。为了为 PostgreSQL 制作一个有状态的 pod,我已经挂载了一个PersistentVolume和PersistentVolumeClaim:
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
Run Code Online (Sandbox Code Playgroud)
这是 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
Run Code Online (Sandbox Code Playgroud)
问题是 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).
Run Code Online (Sandbox Code Playgroud)
我检查了 PostgreSQL pod 的内部,发现它/var/lib/postgresql是空的,就像/data/psql在 minikube 主机中一样。任何人都可以帮忙吗?
改变:
volumeMounts:
- mountPath: /var/lib/postgresql
Run Code Online (Sandbox Code Playgroud)
到
volumeMounts:
- mountPath: /var/lib/postgresql/data
Run Code Online (Sandbox Code Playgroud)
使用错误的 mountPoint postgres 可执行文件被覆盖。
我附加了一张图像,其中包含我从 pod 内部(左侧)和 minikube 空间内部(右侧,来自 virtualbox 的小外壳)看到的数据。
| 归档时间: |
|
| 查看次数: |
3661 次 |
| 最近记录: |