问题描述
joine-admin 模块部署在 K8S 上,通过查看日志发现,时间晚了 8 小时,遂猜想是时区问题。
排查问题
操作记录:
- 查看 k8s 指定命名空间下启动的容器
kubectl get po -n mynamespace
- 查看指定容器日志
kubectl logs -f --tail=200 -n mynamespace mycontainername
解决问题
操作记录:
- 首先,进入容器内查看系统时间,判断日期是否正确。
kubectl exec -it mycontainername -n mycoach -- /bin/sh
/ # date
Sun Aug 18 09:29:17 UTC 2019
可以看到,这里的时区并不是东八区,找到问题根源
CST 应该是指(China Shanghai Time,东八区时间)
UTC 应该是指(Coordinated Universal Time,标准时间)
-
为了解决容器内时区问题,我们需要修改系统两处文件:
/etc/localtime
和/etc/timezone
-
为了减少操作,自动化执行,此处我们采用修改 Dockerfile 的方式
-
修改前
FROM java:8
ADD target/Joine.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
-
修改后
FROM java:8
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
ADD target/Joine.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
完成
再次发布新版本,查看日志,时间已经恢复正常,至此问题解决。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于