1. 在集群上任务日志的输出时间与正常时间不一致

在OpenPAI集群中,因为其使用了Docker 容器运行任务,就会出现系统时区不一致的问题。因大多数为默认 容器镜像的系统时间为 UTC 协调世界时 (Universal Time Coordinated),一般本地所属时区为 CST(+8 时区,上海时间),时间上刚好相差 8 个小时。这就导致了,我们服务启动后,获取系统时间来进行相关操作,例如存入数据库、时间换算、日志记录等,都会出现时间不一致的问题,所以很有必要解决掉容器内时区不统一的问题。
解决方法有下面两种:
A . 可以直接修改 Dockerfile,在构建系统基础镜像或者基于基础镜像再次构建业务镜像时,添加时区修改配置即可。即在Dockerfile中加入下述构建命令:

  1. RUN rm -f /etc/localtime \ &&
  2. ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ &&
  3. echo "Asia/Shanghai" > /etc/timezone

B. 另一种方式,就是进入到容器内处理,但是此方式有个不好的地方就是,如果容器删除后重新启动新的容器,还需要我们进入到容器内配置,非常不方便,所以不建议此方式。即在提交任务的命令中加入下述命令:

  1. rm -f /etc/localtime && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  2. '/etc/localtime' -> '/usr/share/zoneinfo/Asia/Shanghai'

参考“Docker/K8s 解决容器内时区不一致方案