Rancher 2.6下Docker部署Minecraft Bind-Mount数据不持久化问题求助
Minecraft Rancher部署持久化问题排查与解决
排查步骤
- 确认Pod实际运行节点:Rancher多节点集群下Pod会被调度到任意工作节点,你当前查看的宿主机可能不是Pod运行节点。执行
kubectl get pod <你的minecraft-pod名称> -o wide查看Pod调度的节点IP,登录对应节点再检查挂载目录。 - 验证相对路径解析位置:你配置的
./minecraft-data相对路径在K8s环境下,是相对于kubelet进程的工作目录(默认/var/lib/kubelet/下的Pod专属目录),而非你编写YAML文件的本地目录,你在YAML存放目录查找自然看不到文件。 - 检查挂载匹配与权限:执行
kubectl exec <你的minecraft-pod名称> -- df /data查看容器内/data目录的挂载设备ID,和宿主机对应目录的设备ID做对比,确认是否成功绑定。itzg的Minecraft镜像默认以UID 1000的用户运行,如果宿主机挂载目录没有给1000UID开放写入权限,数据会写入容器可写层而非挂载目录,也会导致宿主机目录为空。 - 检查Rancher存储规则覆盖:部分Rancher集群默认会为未指定存储类的工作负载自动分配本地PV,你配置的bind-mount可能被默认规则覆盖,实际挂载的是集群自动创建的临时存储。执行
kubectl describe pod <你的minecraft-pod名称>查看Volumes字段的实际挂载源,确认是否和你配置的目录一致。
解决方案
- 单节点部署场景:改用绝对路径配置绑定挂载,避免相对路径解析歧义,配置示例如下:
volumes: - /opt/minecraft-data:/data
提前在节点执行权限配置命令:chown -R 1000:1000 /opt/minecraft-data && chmod 755 /opt/minecraft-data
- 多节点部署场景:不要使用本地bind-mount,配置NFS共享存储或Rancher内置Longhorn存储类,创建PVC绑定到Minecraft工作负载的/data目录,保证Pod跨节点调度时数据依然可访问。
- 也可以直接在Rancher UI的工作负载配置页,选择「存储」→「添加卷」→「绑定现有主机路径」,手动指定绝对路径完成挂载,避免YAML配置被集群规则覆盖。
内容的提问来源于stack exchange,提问作者Alexp987
相关产品推荐
相关产品推荐

