使用NAS、OSS挂载慢的问题
现象:
在Kubernetes中部署应用时,如果使用了NAS、OSS这类存储卷,有时会出现Pod启动很慢的问题;
启动时间可能会是几分钟或者几十分钟;
原因:
出现这个情况,可以查看一下部署的应用,看看是否给pod配置了fsGroup(可能是主动配置的,也可能是istio注入的);
如果pod的spec中有fsGroup的配置,kubelet在执行完数据卷的挂载后会根据fsGroup进行挂载点的权限设置,即:执行chown、chmod操作;
由于您挂载的目录可能有数量较多的文件,导致linux在执行chown、chmod的时候就会非常慢,即最终表现为挂载很慢(其实纯粹挂载过程很快已经结束);
场景详解:
Flexvolume:
如果应用挂载数据卷使用的是Flexvolume插件;
pod配置了fsGroup;
数据卷不是只读类型;
符合上面的条件就会触发chmod、chown操作,可能导致挂载(pod启动)很慢;
解决:
去掉fsGroup的配置;
对挂载点预先配置其归属和权限;
例如,挂载某个NAS目录,可以预先手动挂载这个目录,执行chmod、chown后,就不需要在pod启动时候再配置了。
CSI:
如果应用挂载数据卷使用的是CSI插件;
pod配置了fsGroup;
数据卷不是只读类型;
数据卷是ReadWriteOnce类型;
符合上面的条件就会触发chmod、chown操作,可能导致挂载(pod启动)很慢;
解决1:
去掉fsGroup的配置;
对挂载点预先配置其归属和权限;
例如,挂载某个NAS目录,可以预先手动挂载这个目录,执行chmod、chown后,就不需要在pod启动时候再配置了。
解决2:
将PV配置为非ReadWriteOnce类型;