我们正在运行一个包含两个VerneMq代理的集群。如果我们一次启动一个代理,一切正常,但是一旦我们需要启动两个代理,所有保留的消息就会丢失。
为了解决这个问题,我们尝试用vernemq配置持久卷,我们可以看到声明被绑定到vernemq并且卷被创建了。即使在此之后,当我们通过重新启动两个吊舱来测试我们的场景时,我们仍然发现保留的消息没有同步。这将导致数据丢失。
下面是我们用来创建存储类的配置:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azure-storage
provisioner: kubernetes.io/azure-disk
parameters:
storageaccounttype: Standard_LRS
kind: managed我们的vernemq配置如下所示:
{{- if .Values.persistentVolume.enabled }}
volumeClaimTemplates:
- metadata:
name: data
annotations:
{{- range $key, $value := .Values.persistentVolume.annotations }}
{{ $key }}: {{ $value }}
{{- end }}
spec:
accessModes:
{{- range .Values.persistentVolume.accessModes }}
- {{ . | quote }}
{{- end }}
resources:
requests:
storage: {{ .Values.persistentVolume.size }}
{{- if .Values.persistentVolume.storageClass }}
{{- if (eq "-" .Values.persistentVolume.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistentVolume.storageClass }}"
{{- end }}
{{- end }}
{{- else }}
- name: data
{{- end }}对PVCs进行了适当的处理。Kubectl get pvc返回我们创建的pvc:
data-vernemq-0 Bound xxx 5Gi RWO default 19h
data-vernemq-1 Bound xxx 5Gi RWO default 18h存储类:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
azure-storage kubernetes.io/azure-disk Delete Immediate false 19h我在配置中遗漏了什么吗?
发布于 2022-09-29 11:17:45
我还建议使用这个提供程序: disk.csi.azure.com .Starting,从1.21开始,默认情况下,这个提供程序是可用的。另外,为了进行测试,您可以使用指向存储帐户的存储类,然后可以查看该结束符将创建的文件。我能想到的另一件事是在存储库中添加下面的代码:
mountOptions:
- dir_mode=0777
- file_mode=0777https://stackoverflow.com/questions/73892998
复制相似问题