首页 > 解决方案 > 如何将 helm 包连接到 PersistentStorage 卷?

问题描述

我经常看到这个问题出现,但我还没有找到一个干净、通用的解决方案。我只是在学习 Kubernetes,所以也许我缺少一些基本的东西。但这是我所做的:

  1. 使用 kubernetes 安装 docker-desktop
  2. 使用 yaml 文件手动创建持久存储卷(如下所示)
  3. helm install redis dandydev/redis-ha

或者您可以使用任何其他 helm chart,无论是 elasticsearch、postgres,您都可以使用。我总是得到pod has unbound immediate PersistentVolumeClaims

当我运行时:kubectl get storageclasses.storage.k8s.io 我确实有(默认)存储:

NAME                 PROVISIONER          AGE
hostpath (default)   docker.io/hostpath   3h8m

任何人都可以帮助我以通用方式解决此问题吗?这样我就可以实际安装 helm 图表并让它们自动连接到持久存储卷?

我的volume.yaml:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: redis-volume
  labels:
    type: local
    app: redis
spec:
  storageClassName: ""
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  hostPath:
    path: "/mnt/redis"

标签: kubernetesrediskubernetes-helmpersistent-storagedocker-desktop

解决方案


好的,所以我在各种自定义解决方案中查看了更多在线信息,其中一个确实有效: https ://github.com/helm/charts/issues/12521#issuecomment-477834805

此外,此答案提供了有关如何在本地启用动态配置的更多详细信息: pod has unbound PersistentVolumeClaims

基本上(除了上面创建的卷)我需要手动:

  1. 通过 storage-class.yaml 创建一个存储类
  2. 将该存储类添加到 'values.yaml' 中的 helm
# storage-class.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: data-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

此外,一些本地运行的图表需要您自定义其配置,under<your-helm>/charts/<chart-name>/<file-to-config.yaml>或 via,--set <var>=value因为大多数 helm 图表希望您使用更多节点,而在本地运行您可能只有一个节点。

另一种选择是使用helm install --set replicas=1 ...,一些图表可以很好地使用它。

希望这可以帮助那里的人。


推荐阅读