Kubernetes StatefulSet-在pod重新启动时不重新存储数据
Kubernetes版本-1.8Kubernetes StatefulSet-在pod重新启动时不重新存储数据,kubernetes,Kubernetes,Kubernetes版本-1.8 使用pvc为postgres数据库创建状态集 在数据库中添加了一些表 通过将statefulset缩放为0,然后再次缩放为1,重新启动pod 步骤2中创建的表不再可用 在docker上为桌面群集k8s 1.10版尝试了另一个带有步骤的scnario 使用pvc为postgres数据库创建状态集 在数据库中添加了一些表 重新启动桌面docker 步骤2中创建的表不再可用 k8s舱单 apiVersion: v1 kind: ConfigMap metada
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-config
labels:
app: postgres
data:
POSTGRES_DB: kong
POSTGRES_USER: kong
POSTGRES_PASSWORD: kong
PGDATA: /var/lib/postgresql/data/pgdata
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-pv
labels:
app: postgres
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/postgresql/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
labels:
app: postgres
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Service
metadata:
name: postgres
app: postgres
spec:
ports:
- name: pgql
port: 5432
targetPort: 5432
protocol: TCP
selector:
app: postgres
---
apiVersion: apps/v1beta2 # for k8s versions before 1.9.0 use apps/v1beta2 and before 1.8.0 use extensions/v1beta1
kind: StatefulSet
metadata:
name: postgres
spec:
serviceName: "postgres"
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:9.6
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
envFrom:
- configMapRef:
name: postgres-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: postgres-pvc
---
如果您有多个节点,那么您看到的问题完全是意料之中的。因此,如果您想在多节点集群中将hostPath用作持久卷,则必须使用一些共享文件系统,如Glusterfs或Ceph,并将/mnt/postgresql/data文件夹放在该共享文件系统上。考虑添加用于创建环境的清单。如果没有这一点,我们根本不知道您正在使用什么类型的资源(例如,问题将是
hostPath
Persistent Volume,它在使用多个节点时不起作用…)。请参阅:。添加了我正在使用的k8s清单您是使用单节点群集(如Minikube)还是使用具有多个节点的Kubernetes群集?如果使用多个节点,问题在于将目录从主机节点的文件系统装载到Pod中的主机路径
卷。重新创建pod时,可能会将其安排在另一个节点中,从而导致卷数据丢失。尝试重新创建步骤,检查这次pod分配给哪个节点kubectl get po-o wide
好吧,因为这是一个猜测,这应该是一个注释提示,而不是一个确定的答案。。。问题的注释中甚至已经说明了主机路径的问题。