kon*_*rer 2 postgresql docker kubernetes
所以我只是想通过实验让一个网络应用程序在 GKE 上运行,以熟悉 Kubernetes 和 GKE。
我有一个 statefulSet (Postgres),它有一个持久卷/持久卷声明,它按预期安装到 Postgres pod。我遇到的问题是让 Postgres 数据持久。如果我在var/lib/postgres数据上安装 PV,每个 pod 更新都会被覆盖。如果我安装在var/lib/postgres/data我收到警告:
initdb: directory "/var/lib/postgresql/data" exists but is not empty
It contains a lost+found directory, perhaps due to it being a mount point.
Using a mount point directly as the data directory is not recommended.
Create a subdirectory under the mount point.
单独使用 Docker 使卷挂载点var/lib/postgresql/data按预期工作并且数据持久,但我现在不知道在 GKE 中该做什么。如何正确设置?
安装文件:
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sm-pd-volume-claim
spec:
storageClassName: "standard"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1G
---
apiVersion: "apps/v1"
kind: "StatefulSet"
metadata:
name: "postgis-db"
namespace: "default"
labels:
app: "postgis-db"
spec:
serviceName: "postgis-db"
replicas: 1
selector:
matchLabels:
app: "postgis-db"
template:
metadata:
labels:
app: "postgis-db"
spec:
terminationGracePeriodSeconds: 25
containers:
- name: "postgis"
image: "mdillon/postgis"
ports:
- containerPort: 5432
name: postgis-port
volumeMounts:
- name: sm-pd-volume
mountPath: /var/lib/postgresql/data
volumes:
- name: sm-pd-volume
persistentVolumeClaim:
claimName: sm-pd-volume-claim
Run Code Online (Sandbox Code Playgroud)
您收到此错误是因为 postgres pod 已尝试在 / 文件夹上挂载数据目录。不建议这样做。
您必须创建子目录来解决 statefulset 清单 yaml 文件上的此问题。
volumeMounts:
- name: sm-pd-volume
mountPath: /var/lib/postgresql/data
subPath: data
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |