You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Helm在K8s集群部署MariaDB时PVC处于Pending状态

问题解决:DigitalOcean K8s集群中Helm部署MariaDB的PVC Pending问题

为什么会创建PersistentVolumeClaim?

Bitnami的MariaDB Helm Chart默认启用持久化存储——这是数据库类应用的标准配置,用来防止Pod重启或销毁时丢失数据。你在ArtifactHub页面看不到PVC定义是因为该页面默认展示简化的Chart信息,PVC的模板实际存在于Chart的templates目录下(比如primary/pvc.yaml和secondary/pvc.yaml)。可以通过以下命令拉取完整Chart源码查看:

helm pull bitnami/mariadb --version 12.2.2
tar -xf mariadb-12.2.2.tgz
cd mariadb/templates

为什么部署时没有自动创建StorageClass或PersistentVolume?

DigitalOcean托管K8s集群默认会提供一个名为do-block-storage的StorageClass,但你的PVC处于Pending状态,大概率是以下原因:

  • 集群的默认StorageClass未正确配置(没有标记为default)
  • Helm Chart部署时未指定使用该StorageClass

Kubernetes的动态PV创建依赖默认StorageClass,如果集群没有默认SC,PVC就无法触发动态PV创建,只能一直Pending。

快速解决方法

1. 检查并设置默认StorageClass

先确认集群的StorageClass状态:

kubectl get storageclasses

如果do-block-storage没有(default)标记,执行命令将其设为默认:

kubectl patch storageclass do-block-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

2. 重新部署时指定StorageClass

如果不想依赖默认SC,部署时直接指定DigitalOcean的存储类:

helm install my-mariadb bitnami/mariadb --version 12.2.2 --set primary.persistence.storageClass=do-block-storage --set secondary.persistence.storageClass=do-block-storage

3. 修复已部署的PVC

如果已经完成部署,直接修改现有PVC的存储类配置:

kubectl patch pvc my-mariadb-primary -p '{"spec":{"storageClassName":"do-block-storage"}}'
kubectl patch pvc my-mariadb-secondary -p '{"spec":{"storageClassName":"do-block-storage"}}'

内容的提问来源于stack exchange,提问作者Konstantin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:02:31