使用NAS、OSS挂载慢的问题

使用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类型;

上一篇:微服务(Microservice)那点事


下一篇:Flexvolume场景云盘迁移方案