1. 在集群上任务日志的输出时间与正常时间不一致
在OpenPAI集群中,因为其使用了Docker 容器运行任务,就会出现系统时区不一致的问题。因大多数为默认 容器镜像的系统时间为 UTC 协调世界时 (Universal Time Coordinated),一般本地所属时区为 CST(+8 时区,上海时间),时间上刚好相差 8 个小时。这就导致了,我们服务启动后,获取系统时间来进行相关操作,例如存入数据库、时间换算、日志记录等,都会出现时间不一致的问题,所以很有必要解决掉容器内时区不统一的问题。
解决方法有下面两种:
A . 可以直接修改 Dockerfile
,在构建系统基础镜像或者基于基础镜像再次构建业务镜像时,添加时区修改配置即可。即在Dockerfile
中加入下述构建命令:
RUN rm -f /etc/localtime \ &&
ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ &&
echo "Asia/Shanghai" > /etc/timezone
B. 另一种方式,就是进入到容器内处理,但是此方式有个不好的地方就是,如果容器删除后重新启动新的容器,还需要我们进入到容器内配置,非常不方便,所以不建议此方式。即在提交任务的命令中加入下述命令:
rm -f /etc/localtime && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
'/etc/localtime' -> '/usr/share/zoneinfo/Asia/Shanghai'