容器与节点时区同步
场景一:容器与节点时区同步
- 登录CCE控制台。
- 在创建工作负载基本信息页面,开启“时区同步”,即容器与节点使用相同时区。
图1 开启时区同步
- 登录节点进入容器查询容器时区是否与节点保持一致。
date -R
命令行终端显示如下信息:
Tue, 04 Jun 2019 15::08:47 +0800
docker ps -a|grep test
命令行终端显示如下信息:
docker exec -it oedd74c66bdb /bin/sh
date -R
命令行终端显示如下信息:
Tue, 04 Jun 2019 15:09:20 +0800
场景二:容器、容器日志与节点时区同步
Java应用打印的日志时间和通过date -R方式获取的容器标准时间相差8小时。
- 登录CCE控制台。
- 在创建工作负载基本信息页面,开启“时区同步”,即容器与节点使用相同时区。
图2 开启时区同步
- 登录节点进入容器,修改catalina.sh脚本。
cd /usr/local/tomcat/bin
vi catalina.sh
若无法在容器中执行vi命令,可以直接执行4,也可以执行vi命令,在脚本中添加 -Duser.timezone=GMT+08,如下图所示:
- 将脚本先从容器内复制至节点,在脚本中添加-Duser.timezone=GMT+08后,从节点复制到容器中。
容器内的文件复制至宿主机:
docker cp mycontainer: /usr/local/tomcat/bin/catalina.sh /home/catalina.sh
宿主机中的文件复制至容器内:
docker cp /home/catalina.sh mycontainer:/ usr/local/tomcat/bin/catalina.sh
- 重启容器。
docker restart container_id
- 重启后查看日志中的时区是否与节点同一时区。
查看方法:单击工作负载名称进入工作负载详情页,单击右上角的“日志”按钮可查看日志详情。日志约需要等待5分钟查看。
场景三:工作负载与节点时区同步
- 方法一:制作容器镜像时,将时区设置为CST。
- 方法二:若不希望修改容器,可在CCE控制台创建工作负载时,将本机的“/etc/localtime”目录挂载到容器的“/etc/localtime”目录下。
示例如下:
kind: Deployment apiVersion: apps/v1 metadata: name: test namespace: default spec: replicas: 2 selector: matchLabels: app: test template: metadata: labels: app: test spec: volumes: - name: vol-162979628557461404 hostPath: path: /etc/localtime type: '' containers: - name: container-0 image: 'nginx:alpine' volumeMounts: - name: vol-162979628557461404 readOnly: true mountPath: /etc/localtime imagePullPolicy: IfNotPresent imagePullSecrets: - name: default-secret