首页 > 解决方案 > 使用 helm 将现有卷附加到 postgres slave

问题描述

这是我为 master 和 slave 创建的两个 yml 文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: db-disk-master
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: managed-premium
  resources:
    requests:
      storage: 5Gi

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: db-disk-slave
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: managed-premium
  resources:
    requests:
      storage: 5Gi

这是我用来安装 postgress 的命令

helm install postgresql-db \
  --set persistence.existingClaim="db-disk-master"\
  --set replication.slaveReplicas=1 \
  --set replication.enabled=true \
  --values <(echo '{
      "slave": {
        "extraVolumes": [
          {
            "name": "db-disk-slave"
          }
        ]
      }
   }') \
  bitnami/postgresql -n development

但是在从节点中执行此操作时,会创建一个新卷并附加到它而不使用该"db-disk-slave"卷。我想在"db-disk-slave" 不创建新卷的情况下连接从节点

标签: kuberneteskubernetes-helmkubernetes-podazure-aks

解决方案


对于 Slave pod,HELM 图表允许您正确设置 PVC

{{- if .Values.slave.extraVolumes }}
        {{- toYaml .Values.slave.extraVolumes | nindent 8 }}
        {{- end }}

问题出在 extraVolume 变量的内容中

卷:-名称:卷persistentVolumeClaim:claimName:db-disk-slave

这将允许从 pod 接收来自现有 PVC 的卷

希望对您有所帮助,如果您还有其他问题,请告诉我

参考:

https://github.com/helm/charts/blob/master/stable/postgresql/templates/statefulset-slaves.yaml#L271-L273

https://docs.microsoft.com/en-us/azure/aks/azure-disks-dynamic-pv#use-the-persistent-volume

以下评论的补充:

--values <(echo '{
"slave": {
"extraVolumes": [
{
"name": "db-disk-slave"
}
]
}
}')

this needs to be updated to

--values <(echo '{
"slave": {
"extraVolumes": [
{
"name": "volume",
"persistentVolumeClaim": { "claimName":  "db-disk-slave" }
}
]
}
}')

查看参考文档https://docs.microsoft.com/en-us/azure/aks/azure-disks-dynamic-pv#use-the-persistent-volume


推荐阅读