ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux环境中快速、准确设置时区的3种方法?k8s中的pod是怎么设置时区的?

2022-07-07 10:05:09  阅读:299  来源: 互联网

标签:设置 07 23 2022 linux 时区 root


一直在使用linux的操作系统,对于时间相关的操作,也就仅限于,修改时间,查看时间,通过不同的输出格式查看时间,这些很小的方面,也觉得够用了,但是······

 

昨天,一个测试的同学问了我一个知识点,让我对于linux的时间设置,又进行了一个全新的,更加深入的探索。

 

他问我:“k8s中应用的时区是怎么设置的?”

 

一时间,我语塞,只是隐隐约约的记得/etc/localtime这个数据卷的挂载,既然无法彻底的说清楚,那么就只好派上我的杀手锏-检索。

 

经过几个小时的研究、探索,我得出以下的结论:

 

  1. 首先,必须要有真正的时区信息文件
  2. 通过某种设置,将环境的时区,设置为其中的某个时区

 

接下来,我们一一展开。

 

1、安装时区文件

 

在linux的环境中,通过以下的命令,即可安装出来时区文件

 

yum install -y tzdata

 

安装完成之后,我们可以看到,在环境中,增加了如下的rpm包

[root@nccztsjb-node-23 ~]# rpm -qa | grep tzdata
tzdata-2018e-3.el7.noarch

 

既然,tzdata是为了安装时区信息文件的,那这些信息在什么地方呢,通过这个rpm包,我们可以一探究竟

rpm -ql tzdata-2018e-3.el7.noarch

 

在/usr/share/zoneinfo目录中的,就是时区信息文件,各种各样的时区,比如,美国,中国,非洲,应有尽有······

 

那我们有了这些时区信息之后,我们如何来配置,我们当前的环境具体用哪个呢?

 

2、设置要使用的时区

 

对于时区的设置,我们可以通过如下的方式:

 

  • 通过/etc/localtime建立和要使用的时区的链接

 

[root@nccztsjb-node-23 ~]# ls -l /etc/localtime 
lrwxrwxrwx. 1 root root 35 Jun 22  2018 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
[root@nccztsjb-node-23 ~]# 

 

这个是目前的时区,我们可以通过timedatectl命令查看

[root@nccztsjb-node-23 ~]# timedatectl
      Local time: Thu 2022-07-07 09:37:39 CST
  Universal time: Thu 2022-07-07 01:37:39 UTC
        RTC time: Thu 2022-07-07 01:35:51
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
[root@nccztsjb-node-23 ~]# 

 

那么,咱们这里演示一个,设置为其他的时区的示例:

 

rm -f /etc/localtime

ln -s /usr/share/zoneinfo/America/Santiago /etc/localtime

[root@nccztsjb-node-23 America]# ls -l /etc/localtime 
lrwxrwxrwx 1 root root 36 Jul  6 21:39 /etc/localtime -> /usr/share/zoneinfo/America/Santiago
[root@nccztsjb-node-23 America]# 

 

此时,已经设置为“America/Santiago”

[root@nccztsjb-node-23 America]# timedatectl
      Local time: Wed 2022-07-06 21:40:15 -04
  Universal time: Thu 2022-07-07 01:40:15 UTC
        RTC time: Thu 2022-07-07 01:38:27
       Time zone: America/Santiago (-04, -0400)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sat 2022-05-14 23:59:59 -03
                  Sat 2022-05-14 23:00:00 -04
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sat 2022-08-13 23:59:59 -04
                  Sun 2022-08-14 01:00:00 -03
[root@nccztsjb-node-23 America]# date
Wed Jul  6 21:40:18 -04 2022
[root@nccztsjb-node-23 America]# 

 

OK,这里就通过/etc/localtime建立和时区文件软链接的方式,设置了当前环境的时区。

 

其实,除了这种方式,还有一种更便捷的方式······

 

  • 设置TZ环境变量

 

通过设置TZ环境变量,我们获得比/etc/localtime更高的优先级,用来设置当前环境的时区

 

export TZ="Asia/Shanghai"

通过以下的前后对比图:

 

 

我们可以发现,快速的将当前环境的时区,设置为需要的时区。

 

事实上,如果你使用了redhat 7以上的版本,还有一个工具一样可以快速的设置时区

 

  • timedatectl

 

没错,就是timedatectl工具,可以用来显示、设置时区,我们来看

 

a.显示当前时间设置

[root@nccztsjb-node-23 ~]# timedatectl
      Local time: Wed 2022-07-06 21:46:28 -04
  Universal time: Thu 2022-07-07 01:46:28 UTC
        RTC time: Thu 2022-07-07 01:44:39
       Time zone: America/Santiago (-04, -0400)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sat 2022-05-14 23:59:59 -03
                  Sat 2022-05-14 23:00:00 -04
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sat 2022-08-13 23:59:59 -04
                  Sun 2022-08-14 01:00:00 -03
[root@nccztsjb-node-23 ~]# 

 

b.列出所有可设置的时区

timedatectl list-timezones

 

c.最后设置需要的时区

 

timedatectl set-timezone "Asia/Shanghai"

 

 

惊奇的发现,通过timedatectl工具设置好时区后,连/etc/localtime也重新建立了和对应时区文件的连接。

 

OK,到这里就是linux环境中,如何安装、配置使用时区的方法了。

 

3、k8s中的pod如何设置时区

 

不过,那位测试同学的问题好像,还没有解决,k8s的pod如何设置时区?

 

如果我们彻底理解了上面的流程,应该是非常简单的了。

 

1、首先k8s中pod使用的镜像必须包含时区文件(可安装tzdata包,或者挂载宿主机的/usr/share/zoneinfo目录)

2、在1的基础上,通过/etc/localtime或者TZ环境变量的方式,可以实现时区的设置。

 

当然了,对于时区设置/etc/localtime的挂载,无非也就是将主机上的链接映射到容器里面而已。

 

如果,容器的镜像中,已经存在时区文件,最好直接用TZ环境变量,会更加的便利、快捷。

 

标签:设置,07,23,2022,linux,时区,root
来源: https://www.cnblogs.com/chuanzhang053/p/16453624.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有