配置NTP服务
更新时间:2025-02-27
在时间敏感的业务场景,使用BCI部署容器应用时,您可以配置NTP服务来确保Pod内容器的时间同步准确,从而规避因时间不准确导致的问题,保证数据准确性和业务正常运行。
配置说明
创建BCI Pod时,可以为Pod添加bci.virtual-kubelet.io/bci-ntp-server
的Annotation来指定NTP服务器的地址,使得Pod内的容器能与NTP服务进行时间同步,从而保证时间准确性。
Annotation请添加在Pod的metadata下,例如:创建Deployment时,Annotation需添加在spec>template>metadata下。
仅支持在创建BCI Pod时添加BCI相关Annotation来生效BCI功能,更新BCI Pod时添加或者修改BCI相关Annotation均不会生效。
Annotation
bci.virtual-kubelet.io/bci-ntp-server
对应的值,只支持指定一个ip
配置示例
- 创建配置NTP服务的应用。
kubectl create -f set-ntp.yaml
yaml内容示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: centos6-vk
name: centos6-vk
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: centos6-vk
template:
metadata:
annotations:
bci.virtual-kubelet.io/bci-ntp-server: "10.0.xx.xx" # 指定NTP服务器的IP地址
labels:
app: centos6-vk
name: centos6-vk
spec:
containers:
- command:
- /bin/sh
- -c
- sleep 3600000
image: registry.baidubce.com/glen-centos/centos:centos6
imagePullPolicy: Always
name: centos-test
resources:
limits:
cpu: 250m
memory: 512Mi
nodeSelector:
type: virtual-kubelet
restartPolicy: Always
tolerations:
- effect: NoSchedule
key: virtual-kubelet.io/provider
operator: Equal
value: baidu
- 时间同步以sidecar的形式集成在了提交的pod内,该sidecar对用户不可见,需要登录pod所在的机器查看
kubectl exec -it ${bci-podname} -c ntp-sidecar -- sh
- 查询容器的时间来源
sh-4.2# chronyc sources
输出结果:
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 10.0.xx.xx 10 6 37 38 +517ns[ +221us] +/- 205us