首页 > 解决方案 > 无法在本地存储类上设置具有持久卷的 couchbase operator 1.2

问题描述

我正在尝试在我的本地系统上设置 couchbase operator 1.2。我按照以下步骤操作:

但是这样做的问题是,一旦系统或 docker 重置或 pod 重置,集群的数据就会丢失。

因此,我尝试通过添加具有本地存储类的持久卷来实现这一点,如文档中所述,但结果仍然相同。吊舱仍会重置。我找不到同样的原因。

因此,如果有人可以建议如何对本地存储类上的持久卷执行相同的操作。我已经成功创建了一个存储类。只是在启动集群并保持一致性时遇到问题。

这是我用来创建存储类和 pv 和 pv 声明的 yaml

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

提前致谢

标签: kubernetescouchbasepersistent-storagepersistent-volumes

解决方案


持久卷使用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所述配置卷配置器,以便使用本地存储类进行动态配置。


推荐阅读