kubernetes - 如何将 helm 包连接到 PersistentStorage 卷?
问题描述
我经常看到这个问题出现,但我还没有找到一个干净、通用的解决方案。我只是在学习 Kubernetes,所以也许我缺少一些基本的东西。但这是我所做的:
- 使用 kubernetes 安装 docker-desktop
- 使用 yaml 文件手动创建持久存储卷(如下所示)
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"
解决方案
好的,所以我在各种自定义解决方案中查看了更多在线信息,其中一个确实有效: https ://github.com/helm/charts/issues/12521#issuecomment-477834805
此外,此答案提供了有关如何在本地启用动态配置的更多详细信息: pod has unbound PersistentVolumeClaims
基本上(除了上面创建的卷)我需要手动:
- 通过 storage-class.yaml 创建一个存储类
- 将该存储类添加到 '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 ...
,一些图表可以很好地使用它。
希望这可以帮助那里的人。
推荐阅读
- javascript - 无法在反应应用程序中使用 chartjs 显示圆环图
- javascript - JSON.stringify() 在req.body 中返回object Object
- javascript - 反应视频播放器不在打字稿上播放本地视频
- python - 如何在 django 中一次创建两个模型
- powershell - powershell:将加密的用户密码保存在文件中以进行比较
- string - 如何在 GitHub 操作中以 json 格式发送多行字符串?
- c++ - 是否可以让 boost multi_index 容器索引一个具有 2 个键值的元素?
- postgresql - 将两个 Docker Container Flask 连接到 PostGIS
- reactjs - 如何去掉ant design的Modal上的滚动条?
- ios - 通过 TextField 定义变量然后将其传递给 Simple Swift UI 应用程序中的观察对象的问题