Kubernetes通过Helm部署Dask时如何为worker配置共享挂载卷
Dask Helm部署共享存储配置问题解决
配置不生效原因
你将volumes配置放在了values.yaml根路径下,但Dask官方Helm Chart的Worker卷定义需要嵌套在worker配置块下,根路径下的volumes字段不被Chart模板识别,因此配置不生效。
正确的values.yaml配置
worker: replicas: 3 volumeMounts: - mountPath: "/mount/path" name: mypd # 卷定义移到worker块内部即可被识别 volumes: - name: mypd persistentVolumeClaim: claimName: myclaim-2 env: - name: EXTRA_CONDA_PACKAGES value: numba xarray -c conda-forge - name: EXTRA_PIP_PACKAGES value: s3fs dask-ml --upgrade jupyter: enabled: false
注意事项
- 你提前创建的PVC
myclaim-2需要设置访问模式为ReadWriteMany,否则只有第一个被调度的Worker节点可以成功挂载存储,其余Worker会处于Pending状态。 - 如果需要Scheduler节点也能访问同一份存储,只需在
scheduler配置块下添加相同的volumeMounts和volumes配置即可。
模板无预留字段的通用解决方法
如果遇到Helm Chart模板确实没有预留卷相关变量的场景,可以通过以下方式实现需求:
- 执行
helm template [发布名称] [Chart包路径] -f values.yaml > output.yaml将Chart渲染为原生Kubernetes资源文件,手动添加卷和挂载配置后执行kubectl apply -f output.yaml部署 - 使用Kustomize对Helm输出的资源做后处理,通过
patches字段统一给Worker Deployment添加卷挂载配置,无需修改Chart本身 - Fork官方Chart仓库,自行修改Deployment模板添加卷相关的变量占位符,后续使用自定义Chart部署
内容的提问来源于stack exchange,提问作者ps0604
相关产品推荐
相关产品推荐

