我正在尝试在本地系统上设置couchbase操作符1.2。我遵循了以下步骤:
- 安装沙发座准入控制器
- 部署Couchbase自主操作员
- 部署Couchbase集群
- 从UI访问CouchBase
但问题是,一旦系统或docker重置或pod重置,集群的数据就会丢失。
因此,出于同样的原因,我试图通过添加具有本地存储类的持久卷来实现这一点,如文档中所述,但结果仍然相同。吊舱仍然可以重置。我找不到同样的原因。
因此,如果有人能建议如何对本地存储类上的持久卷执行同样的操作。我已成功创建了一个存储类。只是在启动集群并保持一致性时出现问题。
以下是我用来创建存储类和pv以及pv声明的yamls
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: myssd
provisioner: local
apiVersion: v1
kind: PersistentVolume
metadata:
name: couchbase-data-2
labels:
type: local
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
storageClassName: myssd
hostPath:
path: "/home/<user>/cb-storage/"
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-test-claim-2
spec:
accessModes:
- ReadWriteOnce
storageClassName: myssd
resources:
requests:
storage: 1Gi
提前感谢
使用hostPath
的持久卷是不持久的。使用local
卷。与hostPath
卷相比,local
卷可以以持久和可移植的方式使用,而无需手动将Pod调度到节点,因为系统通过查看PersistentVolume
上的节点相关性来了解卷的节点约束。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: couchbase-data
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /home/<User>/cb-storage/
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- node1
- node2
- node3
- node4
您不需要手动创建PersistentVolume,因为存储类将在内部执行此操作。
此外,您还需要如本文所述配置local
卷配置器,以便使用本地存储类进行动态配置。