详情页标题前

腾讯云容器服务解决容器内时区不一致问题同尘科技

详情页1

操作场景

腾讯云容器服务(TKE)集群中容器系统时间默认为 UTC 协调世界时间 (Universal Time Coordinated),与节点本地所属时区 CST (上海时间)相差8个小时。在容器使用过程中,当需要获取系统时间用于日志记录、数据库存储等相关操作时,容器内时区不一致问题将会带来一系列困扰。 默认时间不支持直接以集群为单位进行修改,但可在单个容器内进行修改。本文提供了容器内时区不一致问题的多种解决方案,请选择合适的方案进行操作:方案1:Dockerfile 中创建时区文件(推荐)方案2:挂载主机时区配置到容器

操作环境

本文中所有操作步骤均在 TKE 集群节点上完成,相关操作环境如下所示,请对应您实际情形结合文档解决问题:

角色 地域 配置 操作系统 Kubernetes 版本信息
节点 华南地区(广州) CPU:1核内存::1GB带宽:1 Mbps系统盘:50 GB(普通云硬盘) CentOS Linux 7(Core) 1.16.3

问题定位

1. 参考 使用标准登录方式登录 Linux 实例(推荐),登录目标节点。 2. 执行以下命令,查看本地时间。

date

返回结果如下图所示:

腾讯云容器服务解决容器内时区不一致问题同尘科技

3. 依次执行以下命令,查看容器内 CentOS 系统默认时区。

docker run -it centos /bin/sh
date

返回结果如下图所示:

腾讯云容器服务解决容器内时区不一致问题同尘科技


对比发现,本地时间与容器内时区不一致。 4. 执行以下命令,退出容器。

exit

操作步骤

方案1:Dockerfile 中创建时区文件(推荐)

在构建基础镜像或在基础镜像的基础上制作自定义镜像时,在 Dockerfile 中创建时区文件即可解决单一容器内时区不一致问题,且后续使用该镜像时,将不再受时区问题困扰。 1. 执行以下命令,新建 Dockerfile.txt 文件。

vim Dockerfile.txt

2.i 切换至编辑模式,写入以下内容,配置时区文件。

FROM centosRUN rm -f /etc/localtime \&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezone

3.Esc,输入 :wq,保存文件并返回。 4. 执行以下命令,构建容器镜像。

docker build -t centos7-test:v1 -f Dockerfile.txt .

返回结果如下图所示:

腾讯云容器服务解决容器内时区不一致问题同尘科技

5. 依次执行以下命令,启动容器镜像并查看容器内时区。

date
docker run -it centos7-test:v1 /bin/sh
date

此时,容器内时区已与本地时间一致。如下图所示:

腾讯云容器服务解决容器内时区不一致问题同尘科技

6. 执行以下命令,退出容器。

exit

方案2:挂载主机时区配置到容器

解决容器内时区不一致问题,还可以通过挂载主机时间配置到容器的方式进行解决。该方式可以在容器启动时进行设置,也可以在 YAML 文件中使用主机路径挂载数据卷到容器。

容器启动时挂载主机时间配置到容器

挂载主机时间到容器内覆盖配置时,有以下两种选择:方式1:挂载本地 /etc/localtime:需确保该主机时区配置文件存在且时区正确。 方式2:挂载本地 /usr/share/zoneinfo/Asia/Shanghai:当本地 /etc/localtime 不存在或者时区不正确时,可选择直接挂载该配置文件。请对应实际情况,选择以下方式,进行挂载主机时间配置到容器:方式1方式2挂载本地 /etc/localtime1. 依次执行以下命令,查看本地时间并挂载本地 /etc/localtime 到容器内。

date
docker run -it -v /etc/localtime:/etc/localtime centos /bin/sh
date

返回结果如下图所示,容器内时区已与本地时间一致:

腾讯云容器服务解决容器内时区不一致问题同尘科技

2. 执行以下命令,退出容器。

exit

挂载本地 /usr/share/zoneinfo/Asia/Shanghai1. 依次执行以下命令,查看本地时间并挂载本地 /usr/share/zoneinfo/Asia/Shanghai 到容器内。

date
docker run -it -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime centos /bin/sh
date

返回结果如下图所示,容器内时区已与本地时间一致:

腾讯云容器服务解决容器内时区不一致问题同尘科技

2. 执行以下命令,退出容器。

exit

YAML 文件使用主机路径挂载数据卷到容器

本节内容以 mountPath:/etc/localtime 为例,介绍在 YAML 文件中如何通过数据卷挂载主机时区配置到容器内,解决容器内时区不一致的问题。 1. 在节点上执行以下命令,创建 pod.yaml 文件。

vim pod.yaml

2.i 切换至编辑模式,写入以下内容。

apiVersion: v1kind: Podmetadata:  name: test  namespace: defaultspec:  restartPolicy: OnFailure  containers:  - name: nginx    image: nginx-test    imagePullPolicy: IfNotPresent    volumeMounts:    - name: date-config      mountPath: /etc/localtime    command: ["sleep", "60000"]  volumes:  - name: date-config    hostPath:      path: /etc/localtime

3.Esc,输入 :wq,保存文件并返回。 4. 执行以下命令,新建该 Pod。

kubectl create -f  pod.yaml

返回结果如下图所示:

腾讯云容器服务解决容器内时区不一致问题同尘科技

5. 依次执行以下命令,查看该容器内时区。

date
kubectl exec -it test date

返回结果如下图所示,与本地系统时区一致即为成功:

腾讯云容器服务解决容器内时区不一致问题同尘科技



容器服务官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/148414.html

(0)
上一篇 2023年12月9日 下午12:55
下一篇 2023年12月9日 下午12:55
详情页2

相关推荐

  • 腾讯云对象存储更新模板

    功能描述 更新音视频转码模板。 授权说明 授权策略中 action 设置为 ci:UpdateMediaTemplate 。查看所有 action。 服务开通 使用该功能需提前开通数据万象,并绑定存储桶。详情请参见 绑定存储桶。 使用限制 使用该接口时,请先确认相关限制条件。详情请参见 使用限制。 请求 请求示例 PUT /template/<Tem…

    腾讯云 2023年12月9日
  • 我们升级到了Serverless 应用引擎2.0版本,发现没有SDK或者API可以使用吗? -云小二-阿里云

    我们升级到了Serverless 应用引擎2.0版本,发现没有SDK或者API可以使用吗? SAE 2.0。那边说 SAE 2.0的SDK/API要等到明年3-4月?不知道是否属实,如果这样的话我们的项目无法使用SAE 2.0。 我不确认的说所有API都没有吗,还是部分没有 以下为热心网友提供的参考意见 没说要等明年的3-4月份吧,估计值班同学搞错了,我们近…

    阿里云 2023年12月13日
  • 请教个问题,我在83服务器上部署了一个Flink1.17 ,有人遇到过吗?-云小二-阿里云

    请教个问题,我在83服务器上部署了一个Flink1.17 ,然后我又两个mysql数据库,分别部署在63服务器和81服务上了,我在往83提交cdc作业时(链接的是81服务器上的数据库),前面几个任务能正常提交,后面再提交报超时,为了验证cdc连接数,我把后面的任务链接的服务器改为了63,可以正常提交,有人遇到过吗? 以下为热心网友提供的参考意见 根据您提供的…

    2024年1月4日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云RDS数据库CheckDBNameAvailable – 检查数据库名称是否可用-云淘科技

    该接口用于检查数据库名称是否重复或不符合命名规范。 接口说明 适用引擎 RDS MySQL RDS PostgreSQL RDS SQL Server RDS MariaDB 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试调试授权信息下表是A…

    阿里云数据库 2023年12月9日
  • 腾讯云云函数(SCF)使用方法-云淘科技

    本文介绍如何通过控制台使用镜像来部署函数。 前提条件 云函数 SCF 支持容器镜像服务企业版和个人版的镜像仓库,您可以根据自身的实际需求进行镜像仓库选型。购买容器镜像服务企业版实例,详情可参见 快速入门。使用容器镜像服务个人版镜像仓库,详情可参见 快速入门。 使用控制台创建函数 镜像推送 执行以下代码,将构建完成的镜像推送到您的镜像仓库。 # 切换到文件下载…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。