问题
最近在使用 MinIO SDK 上传资源对象时, 出现了一个问题: The difference between the request time and the server's time is too large.
从错误信息可以看出客户端上传资源的时间与 Minio server 的时间相差太大, 导致资源上传失败。
解决
根据错误信息得出 server 端的时间出现异常, 由于我采用容器部署的方式, 因此可以先查看容器的时间是否正确。
- 进入 Minio 容器 , 执行命令:
date
, 可以看到如图结果( UTC 时间):
而目前的时间是( CST 时间) :
可以看出容器的时间与实际的时间相差太大, 所以导致资源上传失败。
方法1
出现了时间异常的问题, 可能很多人第一反应就是调整容器的时间,通过 ntpdate 等工具调整时间, 这种解决方法方法适用于非容器的 MinIO SERVER 环境调整时间,容器因为一些限制无法使用此方法。
方法2
在网上查看了许多相关的问题,有了一个针对容器的解决方法,执行:
docker run --rm --privileged alpine hwclock -s
可以看到容器时间已经正常了:
我对这条命令不太明白,不明白为什么会影响到其它运行中的容器, 可能是与 docker for win 的一些容器实现机制相关。