本文为您介绍OSS存储卷常见问题的处理方法。
OSS存储卷挂载时间延长
问题现象
OSS存储卷挂载时间延长。
问题原因
同时满足以下配置,kubelet在存储卷挂载过程中将执行chmod或chown操作,导致挂载时间延长。
- 在PV及PVC模板中配置的参数AccessModes值为ReadWriteOnce。
- 在应用模板中配置了securityContext.fsgroup参数。
解决方案
- 若应用模板中配置了securityContext.fsgroup参数,请删除securityContext下的fsgroup参数。
- 若需要将挂载目录内文件变成期望的UID和mode,可以手动将Bucket挂载到一台ECS。再通过命令行执行
chown
和chmod
,完成后通过CSI使用OSS存储卷。关于如何通过CSI使用OSS存储卷,请参见使用OSS静态存储卷。 - 对于1.20及之后版本的Kubernetes集群,除了上述两种解决方法外,也可通过将fsGroupChangePolicy配置为OnRootMismatch,这时只有在首次启动时才会执行
chmod
或chown
操作,导致存在挂载时间延长的问题,后续挂载OSS存储卷时挂载时间将恢复正常。关于fsGroupChangePolicy参数的更多信息,请参见为Pod或容器配置安全性上下文。 - OSSFS PVC不建议做写操作,默认只读。
OSS存储挂载权限问题
OSS挂载默认使用Linux的root权限进行挂载,如果需要修改挂载配置,您可以在OSS静态卷PV中增加otherOpts字段的配置,添加配置的格式例如otherOpts: "-o max_stat_cache_size=0 -o allow_other -o mp_umask=133"
,具体配置权限说明如下。
- 修改挂载掩码权限:
- 若指定挂载目录的权限为644,在otherOpts字段中增加配置:
-o mp_umask=133
。 - 若指定挂载目录里文件的权限为644,在otherOpts字段中增加配置:
-o umask=133
。
- 若指定挂载目录的权限为644,在otherOpts字段中增加配置:
- 指定挂载目录里文件的角色权限:
- GroupID权限为指定权限,在otherOpts字段中增加配置:
-o gid=XXX
,其中,XXX为您在/etc/password
中记录的角色组ID。 - UserID权限为指定权限,在otherOpts字段中增加配置:
-o uid=XXX
,其中,XXX为您在/etc/password
中记录的角色ID。
- GroupID权限为指定权限,在otherOpts字段中增加配置:
OSS静态卷挂载失败
问题现象
OSS静态卷挂载失败。
问题原因
静态卷目前不支持挂载在Bucket中不存在的目录中,原挂载目录不存在导致挂载失败。
解决方案
您需要更换OSS Bucket目录后重新进行OSS静态卷挂载。
- 登录OSS管理控制台。
- 创建Bucket存储空间。具体操作,请参见控制台创建存储空间。
- 重新进行OSS静态卷挂载。具体操作,请参见使用OSS静态存储卷。
OSS静态卷访问Bucket失败
问题现象
OSS静态卷访问Bucket失败。
问题原因
使用OSS静态数据卷时,没有填写AK/SK信息。
解决方案
您需要填写AK/SK作为OSS静态卷访问Bucket的凭证。具体操作,请参见使用OSS静态存储卷。
OSS静态卷访问Bucket过慢
问题现象
OSS静态卷访问Bucket过慢。
问题原因
OSS对象存储本身没有文件数限制,但当文件数量大于1000时,会使OSS的FUSE访问元数据过多,导致Bucket访问过慢。
解决方案
容器内挂载OSS时,建议以只读的形式访问Bucket,针对大量平铺对象,可采用OSS SDK方式或CLI方式等非文件系统挂载方式,访问Bucket的数据。更多信息,请参见SDK示例简介。
OSS控制台看到文件大小为0
问题现象
容器内挂载OSS数据卷时,在文件中写入数据,但在OSS控制台看到文件大小为0。
问题原因
容器使用OSSFS挂载OSS,即基于FUSE方式挂载OSS的Bucket,只有文件执行close或者flush时,文件内容才会上传至OSS的服务端。
解决方案
使用lsof+文件名称的方式,查看当前文件是否被其他进程占用,关闭相应进程,释放文件fd。关于lsof更多信息,请参见Isof。
文件目录挂载后,显示为文件对象
问题现象
容器内挂载OSS数据卷时,文件原本是目录,挂载后,显示为文件对象。
问题原因
容器内挂载OSS数据卷,客户端从OSS服务端拉取文件元信息时,缺少元信息x-oss-meta-mode
,导致目录被解析为文件。
解决方案
容器内挂载OSS数据卷时,您需要在OSS静态卷PV的otherOpts字段中增加-o complement_stat
解决。