在Kubernetes 1.11.2 + Ubuntu 18.04上,使用NFS部署JupyterHub和IPFS后,所有的服务都是可以用的。
1、问题现象
但在重启机器后,所有的PVC都无法连接、Pod启动失败。
查看NFS服务、PVC、PV都是绿色状态,全部正常。后来发现这个是假信号,磁盘根本没有挂载。
查看Pod的日志,显示“invalid directory or file”。
从原始磁盘查起,在命令行运行df -h,发现NFS的挂载盘没有出现。
奇了怪了!
2、解决方法
突然想起,可能是启动时系统没有挂载数据盘!!!
去挂载数据盘,再重启一下docker。再去看,Pod已经可以正常访问了。问题确认!
3、一劳永逸
把磁盘设为系统启动挂载(Ubuntu 桌面版直接使用“磁盘”工具,进去修改选项即可)。
服务器可以将其参数写入/etc/fstab,启动时就会自动挂载。
sudo nano /etc/fstab
里面的格式是(各个域用空格分开):
- file system,可以通过ls -l /dev/disk/by-uuid查看UUID,设进去。
- mount point,一般为/mnt/mydatadisk,mydatadisk为自己的名称。
- type,设为auto,如果是特殊格式需要专门设置。
- option,设为 nosuid,nodev,nofail,x-gvfs-show。这些参数是桌面“磁盘工具”设置产生的,有的好像没啥用。
- dump,设为0。
- pass,设为0。
我的磁盘是NTFS格式,从原来移动硬盘拔下来的。现在的Ubuntu18.04对NTFS支持还是不错了。
然后按ctrl+x保存,重启系统后,Pod的启动和数据访问都恢复了正常。
如果有多个磁盘,参照上面的格式一一处理,在fstab里添加多条记录。对于Kubernetes这样的集群,都需要在启动时就挂载磁盘的,里面的Pod才能访问到。当然,也可以使用LVM逻辑卷的方式由系统自动合称为一个大的逻辑磁盘。
4、参考资源