使用 chrony 搭建时钟同步服务器
对于容器编排系统,各个 node、pod 的时钟同步很重要,一般会在局域网搭建自己的时钟同步服务器。

使用 chrony 搭建时钟同步服务器
update @2018/01/23
update @2018/12/19
对于容器编排系统,各个node、container的时钟同步很重要,一般会在局域网搭建自己的时钟同步服务器。
由于CentOS7 上默认安装了 chrony, 并且经过调研,发现 chrony 比 ntp 性能更好,安装更加方便简单,于是直接使用 chrony 作为整个集群的时钟服务器。
Chrony官方对比文章
1. 设置时区
将所有节点设置为中国时区
echo "Asia/shanghai" > /etc/timezone && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2. 安装chrony 服务端
#安装chrony
yum install chrony -y
#对于用作ntp server的服务器,需要修改server本身的时钟源,并且设置允许来这儿同步的网段 :
sed -e 's!centos.pool.ntp.org!cn.pool.ntp.org!g' -i /etc/chrony.conf
sed -e '/^#allow*/a\allow 172.20.0.0/16 \nallow 172.16.0.0/16 \nallow 10.0.0.0/8' -i /etc/chrony.conf
#设置开机自启并启动服务
systemctl enable chronyd && systemctl restart chronyd
3. 配置 chrony客户端
yum install chrony -y
#其它需要时钟同步的节点,设置从上述服务器同步时钟
sed -i '/^server*/d' /etc/chrony.conf
sed -i -e '/^# Please consider*/a\server ntp01.k8s' /etc/chrony.conf
systemctl enable chronyd && systemctl restart chronyd
4. 使用方法
chronyc accheck #检查NTP访问是否对特定主机可用
chronyc activity #该命令会显示有多少NTP源在线/离线
chronyc add server #手动添加一台新的NTP服务器
chronyc clients #在客户端报告已访问到服务器
chronyc delete #手动移除NTP服务器或对等服务器
chronyc settime #手动设置守护进程时间
chronyc tracking #显示系统时间信息
chronyc sources -v #查看时间同步源
chronyc sourcestats -v #查看时间同步源状态
5. Docker配置chrony(目前还不支持)
根据实际调研情况, 发现在docker容器内暂不支持通过ntpdate修改时间。
因此, host主机的时钟一致性就变得尤为重要了, 而期望在Docker容器内手动时钟同步就变得没有意义了。
不过, Docker容器本身可以运行 chronyd 或者 ntpd服务作为时钟同步服务器, 但是也没什么意义了;
验证过程中截图如下:
-
普通VM时钟同步
-
Docker容器内时钟同步
现有的测试环境中, 在Kubernetes的master节点上安装了chronyd服务, 其它节点从这里同步时间, 确保集群内host主机的时钟一致性。
master节点
chronyd
服务
- node节点配置
vim /etc/chrony.conf
参考文档
https://linux.cn/article-4764-1.html
http://blog.51cto.com/mhlinux/1892031
https://blacksaildivision.com/ntp-centos