git-sync配合Persistent Volume在kind集群使用报错求助
解决方案
1. 解决kind集群目录不存在的报错
你当前使用的是local类型的PersistentVolume,该配置声明的路径是kind集群节点内部的文件路径,和你本地主机的文件系统是完全隔离的,因此你本地存在对应路径不代表kind节点内也存在,按以下步骤操作即可:
- 临时创建目录(kind集群重启后会失效):
直接执行docker命令进入kind控制平面节点创建目标路径:
docker exec -it kind-control-plane mkdir -p /Users/my_user/k8s/pv1
- 永久配置(kind集群重启后目录依然存在,还能直接同步本地目录数据):
创建kind集群时使用自定义配置文件kind-config.yaml,将本地目录直接挂载到kind节点的对应路径:
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraMounts: - hostPath: /Users/my_user/k8s/pv1 containerPath: /Users/my_user/k8s/pv1
创建集群时指定配置:
kind create cluster --config kind-config.yaml
2. 你标注的两处配置含义解释
- git-sync的
--root=/git参数:指定git-sync容器内部存放拉取到的Git仓库数据的根目录,你配置的软链接current就会生成在这个目录下 volumeMounts.mountPath: /git配置:将你声明的dbt-pvc对应的持久卷挂载到git-sync容器内部的/git路径,这样git-sync写入/git的数据会落到持久卷上,可被其他Pod共享访问
3. 额外注意事项(避免后续踩坑)
- git-sync默认以非root用户运行,挂载的持久卷目录可能没有写入权限,执行以下命令临时放开权限即可:
docker exec kind-control-plane chmod 777 /Users/my_user/k8s/pv1
- trim-pod挂载持久卷到
/tmp/dbt后,拉取到的Git代码实际存放在/tmp/dbt/current路径下,执行业务代码时注意路径不要写错 - 先确认你的kind集群存在名为
local-storage的StorageClass,执行kubectl get storageclasses即可查看,如果不存在可以将PV和PVC的storageClassName字段设置为空字符串,不影响静态PV的使用
内容的提问来源于stack exchange,提问作者big_ej
相关产品推荐
相关产品推荐

