吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 82|回复: 7
上一主题 下一主题
收起左侧

[经验求助] 求助:求大佬教我修改Linux的系统时间

[复制链接]
跳转到指定楼层
楼主
lydy625 发表于 2026-7-7 15:49 回帖奖励
50吾爱币
Dear 各位大佬:


我有几台K8s服务器,全部都是内网运行的,我用timedatectl status查看时间,一共有三个时间,分别是,CST本地时间,UTC世界协调时,RTC硬件时间,和时区。现在这个localTime一直跑不准确,,局域网服务器集群上有其他前置机通了互联网的,但是没有统一的NTP服务器,请问我要怎么设置才能让localTime跟着北京时间跑。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
zach14c 发表于 2026-7-7 16:16
使用 systemd-timesyncd
参考: https://www.cnblogs.com/pipci/p/12833228.html
systemctl status systemd-timesyncd
vi /etc/systemd/timesyncd.conf
NTP=ntp.ntsc.cas.cn
systemctl restart systemd-timesyncd
3#
simoyu 发表于 2026-7-7 16:27
全部服务器:
   timedatectl set-timezone Asia/Shanghai
   timedatectl set-local-rtc 0
前置机:
   chrony 同步公网 NTP
   allow 内网 K8s 网段
   防火墙开放 UDP 123
所有 K8s 节点:
   chrony 只配置 server 前置机IP iburst
定期检查:
   chronyc sources -v
   chronyc tracking
   timedatectl status
4#
wujialin1219 发表于 2026-7-7 16:36
5#
 楼主| lydy625 发表于 2026-7-7 17:19 |楼主
simoyu 发表于 2026-7-7 16:27
全部服务器:
   timedatectl set-timezone Asia/Shanghai
   timedatectl set-local-rtc 0

前置机是windows的,我有多余的电脑可以用来专门做NTP服务。这需要怎么设置,大佬。
6#
simoyu 发表于 2026-7-7 18:21
lydy625 发表于 2026-7-7 17:19
前置机是windows的,我有多余的电脑可以用来专门做NTP服务。这需要怎么设置,大佬。

用多余电脑专门装一台 Linux,作为内网 NTP 服务器;所有 K8s 节点都同步它。
7#
li962905857 发表于 2026-7-7 18:59
[Asm] 纯文本查看 复制代码
内网 K8s 集群统一北京时间完整方案
整体架构思路
前置机(能通互联网):部署 Chrony 作为内网 NTP 服务端,先同步公网阿里云 / 国家授时中心北京时间;
所有 K8s 内网节点:全部配置为 Chrony 客户端,只同步这台前置机的时间源;
全集群统一时区 Asia/Shanghai,系统时间同步后自动写入 RTC 硬件时钟,解决 LocalTime 跑偏问题;
全程使用chronyd(比传统 ntpd 更适合服务器集群、断网漂移抑制强、K8s 官方推荐)。
一、所有机器先统一设置时区(前置机 + 全部 K8s 节点都执行)
bash
运行
# 设置上海时区(CST东八区北京时间)
timedatectl set-timezone Asia/Shanghai

# 验证时区
timedatectl status
# 正常输出 Time zone: Asia/Shanghai (CST, +0800)
二、配置【能上网的前置机】作为内网 NTP 服务端
1. 安装 chrony(CentOS/RHEL)
bash
运行
yum install -y chrony
# Debian/Ubuntu:apt install -y chrony
2. 修改配置文件 /etc/chrony.conf
备份原文件后编辑:
bash
运行
cp /etc/chrony.conf /etc/chrony.conf.bak
vi /etc/chrony.conf
全部替换为下面内容:
conf
# 公网国内NTP源(优先阿里云、国家授时中心)
server ntp.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp.ntsc.ac.cn iburst

# 时间偏差超过1秒时,开机直接一步修正,不渐变
makestep 1.0 3
# 自动同步RTC硬件时钟,系统时间更新后写入主板时间
rtcsync
# 时间漂移记录文件
driftfile /var/lib/chrony/drift

# 允许整个内网网段访问这台NTP服务器(改成你实际内网网段,例10.0.0.0/24 /192.168.1.0/24)
allow 192.168.0.0/16
# 断外网时,本机作为第10层时钟源给内网提供时间
local stratum 10
3. 放行 UDP 123 端口(NTP 标准端口)
防火墙 firewalld
bash
运行
firewall-cmd --permanent --add-port=123/udp
firewall-cmd --reload
iptables
bash
运行
iptables -A INPUT -p udp --dport 123 -s 192.168.0.0/16 -j ACCEPT
4. 启动开机自启并生效
bash
运行
systemctl enable --now chronyd
# 重载系统时间服务
systemctl restart systemd-timedated
5. 验证前置机同步公网时间
bash
运行
# 查看上层公网时间源同步状态
chronyc sources -v
# 带*号代表成功同步公网源
chronyc tracking
# 查看系统时间同步标记
timedatectl status
# NTP synchronized: yes 代表本机时间已校准为北京时间
三、所有内网 K8s 节点配置 Chrony 客户端(核心步骤)
1. 安装 chrony
bash
运行
yum install -y chrony
2. 修改 /etc/chrony.conf,注释全部公网 server/pool,只保留内网前置机源
bash
运行
cp /etc/chrony.conf /etc/chrony.conf.bak
vi /etc/chrony.conf
配置内容(把192.168.1.10替换为你前置机内网 IP):
conf
# 仅同步内网NTP前置机,注释掉所有公网server
server 192.168.1.10 iburst minpoll 4 maxpoll 6

makestep 1.0 3
rtcsync
driftfile /var/lib/chrony/drift
# 客户端不需要allow、local stratum,删除或注释
#allow 0.0.0.0/0
#local stratum 10
3. 重启服务并开机自启
bash
运行
systemctl enable --now chronyd
systemctl restart systemd-timedated
4. K8s 节点验证同步内网前置机
bash
运行
# 看到*前置机IP即为同步成功
chronyc sources -v
chronyc tracking
# timedatectl查看同步状态
timedatectl status
关键判断项:
System clock synchronized: yes 系统时间已对齐北京时间
NTP service: active chrony 正常运行
RTC in local TZ: no(标准推荐,硬件时钟存 UTC,系统显示 CST,不要改成 yes)
四、解决 LocalTime 一直跑不准确的原理说明
LocalTime = UTC + 8 小时时区偏移
只要 chrony 正常同步,UTC 会精准,LocalTime 自动等于北京时间;
rtcsync 参数作用:每分钟把同步后的系统时间写入主板 RTC 硬件时钟,重启机器不会丢失时间基准;
makestep 1.0 3:开机如果本机时间和标准时间差 1 秒以上,直接一次性修正,避免慢慢漂移;
关闭系统自带systemd-timesyncd(冲突会导致时间跳变):
bash
运行
systemctl disable --now systemd-timesyncd
timedatectl set-ntp true
五、常见问题排查
1. K8s 节点无法同步前置机
检查前置机防火墙 UDP123 放行内网网段;
检查前置机allow 网段配置是否包含 K8s 节点 IP;
节点 ping 前置机 IP、telnet 前置机 IP 123(udp 端口测试)。
2. timedatectl 显示 NTP synchronized: no
bash
运行
# 手动强制同步一次
chronyc makestep
# 再查看
chronyc tracking
3. 集群时间重启后又跑偏
确认配置里存在rtcsync,手动执行一次同步写入硬件时钟:
bash
运行
hwclock --systohc
六、批量部署建议(多台 K8s 节点快速统一)
把客户端 chrony 配置写成脚本,批量分发执行,统一时区 + 替换 chrony.conf + 重启服务,避免逐台操作。
最终校验标准(任意节点执行 timedatectl status)
plaintext
Local time: Tue 2026-07-07 xx:xx:xx CST
Universal time: Tue 2026-07-07 xx:xx:xx UTC
RTC time: Tue 2026-07-07 xx:xx:xx
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
此时所有节点 LocalTime 会稳定跟随北京时间,不会持续偏移。


下方是元宝的回答
[Asm] 纯文本查看 复制代码
核心思路:统一走北京时间
先明确一个关键前提:你的集群绝对不能直接连互联网。
所以核心方案是:找一台能上网的机器做“代理”。
把它搭建成离线环境的 NTP 服务器。
集群内所有节点都向它对齐时间。
🛠️ 第一步:打通网络授时源
你需要在一台能上互联网的“前置机”上操作。
让它先同步公网时间,再对内提供服务。
安装软件:Ubuntu 装 chrony,CentOS/RHEL 装 ntp或 chrony。
配置上游:编辑配置文件,指向国内稳定的公网 NTP 源。
推荐阿里云:ntp.aliyun.com、ntp1.aliyun.com、ntp2.aliyun.com。
启动服务:改完配置重启服务,用命令确认它在同步。
验证指令:chronyc sources -v或 ntpq -p,看到公网地址就行。
🌐 第二步:开启对内广播
这台前置机搞定后,还要允许内网服务器来“问时间”。
继续修改它的 NTP 配置文件:
开放监听:把 127.0.0.1改成 0.0.0.0,允许所有网卡接收请求。
放行网段:加一行 allow 192.168.0.0/16(按你实际内网改)。
设置层级:加一行 local stratum 10,断网时也能靠自身硬件时钟服务。
重启生效:保存配置并重启 NTP 服务。
防火墙放行:确保内网能访问该机器的 UDP 123 端口。
⚙️ 第三步:内网节点对齐
现在去那几台时间不准的内网服务器上操作。
把它们都指向刚建好的前置机。
配置下游:同样修改 NTP 配置,把上游地址改成前置机的 IP。
强制同步:执行 ntpdate -u 前置机IP立即拉齐时间。
启动服务:重启本机 NTP 服务,让时间持续自动校准。
验证状态:用 ntpq -p看,有前置机 IP 且 offset 很小就对了。
🕒 第四步:死磕 CST 北京时间
时间同步了,还得确保显示的是标准的“北京时间”。
检查时区:执行 timedatectl,必须是 Asia/Shanghai(CST, +0800)。
修改时区:如果不是,执行 sudo timedatectl set-timezone Asia/Shanghai。
理解 RTC:硬件时间默认是 UTC,这是正常的,千万别改。
避坑提醒:别把硬件时钟设成 Local RTC,会导致重启时间错乱。
📌 排查与防跳变
如果时间偏差太大,NTP 可能会拒绝同步。
这时可以手动干预一下:
强制校准:执行 ntpdate -u 前置机IP。
逐步调整:不想跳变,可停服务后用 ntpd -gq慢慢追平。
定期检查:日常用 ss -ulnp | grep 123看端口,tail看日志。
8#
 楼主| lydy625 发表于 2026-7-8 08:36 |楼主
simoyu 发表于 2026-7-7 18:21
用多余电脑专门装一台 Linux,作为内网 NTP 服务器;所有 K8s 节点都同步它。

今天我来试试
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-7-8 08:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表