问题

最近在使用 MinIO SDK 上传资源对象时, 出现了一个问题: The difference between the request time and the server's time is too large. 从错误信息可以看出客户端上传资源的时间与 Minio server 的时间相差太大, 导致资源上传失败。

解决

根据错误信息得出 server 端的时间出现异常, 由于我采用容器部署的方式, 因此可以先查看容器的时间是否正确。

  • 进入 Minio 容器 , 执行命令: date, 可以看到如图结果( UTC 时间):

img.png

而目前的时间是( CST 时间) :

img.png

可以看出容器的时间与实际的时间相差太大, 所以导致资源上传失败。

方法1

出现了时间异常的问题, 可能很多人第一反应就是调整容器的时间,通过 ntpdate 等工具调整时间, 这种解决方法方法适用于非容器的 MinIO SERVER 环境调整时间,容器因为一些限制无法使用此方法。

方法2

在网上查看了许多相关的问题,有了一个针对容器的解决方法,执行:

docker run --rm --privileged alpine hwclock -s

可以看到容器时间已经正常了:

img.png

我对这条命令不太明白,不明白为什么会影响到其它运行中的容器, 可能是与 docker for win 的一些容器实现机制相关。

参考资料