关于 docker overlay 存储相比 device mapper 的优势,可以在 google 上搜索相关资料。在 ubuntu 16.04.2 上可以直接使用 overlay 存储,而在 CentOS7上需要预处理才能使用 overlay 存储。
1. CentOS7 Overlay 存储现状
CentOS7的内核是3.X,官方基于该内核构建了 overlay 存储驱动,但是不能直接加载,否则,docker 和 kubernetes 运行时会出现异常。如:
基于 docker 部署的 calico node 报文件操作错误,以及由此产生的 kubernetes pod 网络不通、kube-dns 运行失败。
2. CentOS7 Overlay 启用方法
要在CentOS7中正确启用Overlay存储,可以参考 RedHat 的下述文档:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.2_Release_Notes/technology-preview-file_systems.html
简单来说,有以下几点:
2.1 xfs 文件系统
XFS文件系统格式化时必须加 -n ftype=1 参数
注:CentOS7安装时默认没有加这个参数,在安装界面也没有修改的地方。建议另外准备一块磁盘或者分区,加参数 -n ftype=1 格式化为 xfs 格式,然后将 /var/lib/docker 挂载上去:
mkfs.xfs -n ftype=1 /dev/sdbX
2.2 selinux
/etc/sysconfig/docker 去除 --selinux-enabled
2.3 内核驱动
echo 'overlay' > /etc/modules-load.d/overlayreboot