[英]How to persist data using a postgres database, Docker, and Kubernetes?
[英]How to have data persist in GKE kubernetes StatefulSet with postgres?
所以我只是想通過實驗讓一個網絡應用程序在 GKE 上運行,以熟悉 Kubernetes 和 GKE。
我有一個 statefulSet (Postgres),它有一個持久卷/持久卷聲明,它按預期安裝到 Postgres pod。 我遇到的問題是讓 Postgres 數據持久。 如果我將 PV 掛載在var/lib/postgres
上,則每次 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
您收到此錯誤是因為 postgres pod 已嘗試在 / 文件夾上掛載數據目錄。 不建議這樣做。
您必須創建子目錄來解決 statefulset 清單 yaml 文件上的此問題。
volumeMounts:
- name: sm-pd-volume
mountPath: /var/lib/postgresql/data
subPath: data
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.