【发布时间】:2021-05-10 13:29:10
【问题描述】:
我正在尝试在 Digital Ocean 上的 Kubernetes 集群中创建一个 PostgreSQL 数据库。为此,我创建了一个StatefulSet 和一个Service。为了设置一个卷来保存数据,我查看了Add Block Storage Volumes tutorial。我的StatefulSet 和Service 的k8s 配置如下。
我只是使用了 volumeClaimTemplates 。集群中存在存储类do-block-storage(volumeBindingMode设置为Immediate)。 pv 和 pvc 已成功创建。
一个volumeClaimTemplates,负责按名称csi-pvc 定位块存储卷。如果该名称的卷不存在,将创建一个。
但我的 pod 陷入了 CrashLoopBackOff。 我收到了:0/1 nodes are available: 1 pod has unbound immediate PersistentVolumeClaims. Back-off restarting failed container
值得一提的是,我的集群只有一个节点。
谁能帮我理解为什么?谢谢
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: postgres-db
spec:
serviceName: postgres-db
selector:
matchLabels:
role: db
app: my-app
replicas: 1
template:
metadata:
labels:
role: db
app: my-app
spec:
containers:
- name: postgres
image: postgres:13
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
volumeMounts:
- mountPath: "/data"
name: csi-pvc
- mountPath: "/config"
name: postgres-config-map
volumes:
- name: postgres-config-map
configMap:
name: postgres-config
volumeClaimTemplates:
- metadata:
name: csi-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: do-block-storage
---
apiVersion: v1
kind: Service
metadata:
name: postgres-db
labels:
role: db
app: my-app
spec:
selector:
role: db
app: my-app
ports:
- port: 5432
targetPort: 5432
type: ClusterIP
【问题讨论】:
-
您是否尝试将
volumeBindingMode设置为WaitForFirstConsumer? -
@mario 无法更改 do-block-storage StorageClass。但我设法通过首先添加 pvc 而不是使用 volumeClaimTemplates 来解决我的问题
-
如果您找到了解决方案,请将其分享为您问题的答案并将其标记为已接受。它还可以为将来可能遇到类似问题的其他人提供服务。谢谢。
标签: kubernetes deployment digital-ocean