This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.15.5. 配置 PTP 设备
PTP Operator 将 NodePtpDevice.ptp.openshift.io 自定义资源定义(CRD)添加到 OpenShift Container Platform。
安装后,PTP Operator 会在每个节点中搜索具有 PTP 功能的网络设备。它为提供兼容 PTP 的网络设备的每个节点创建并更新 NodePtpDevice 自定义资源(CR)对象。
15.5.1. 在集群中发现具有 PTP 功能网络设备 复制链接链接已复制到粘贴板!
要返回集群中具有 PTP 功能网络设备的完整列表,请运行以下命令:
oc get NodePtpDevice -n openshift-ptp -o yaml
$ oc get NodePtpDevice -n openshift-ptp -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.5.2. 将 linuxptp 服务配置为 grandmaster 时钟 复制链接链接已复制到粘贴板!
您可以通过创建一个配置主机 NIC 的 PtpConfig 自定义资源 (CR) 将 linuxptp 服务 (ptp4l、phc2sys、ts2phc) 配置为 grandmaster 时钟。
ts2phc 工具允许您将系统时钟与 PTP grandmaster 时钟同步,以便节点可以将精度时钟信号流传输到下游 PTP 普通时钟和边界时钟。
使用 PtpConfig CR 示例,将 linuxptp 服务配置为特定硬件和环境的 grandmaster 时钟。这个示例 CR 没有配置 PTP 快速事件。要配置 PTP 快速事件,请为 ptp4lOpts、ptp4lConf 和 ptpClockThreshold 设置适当的值。ptpClockThreshold 仅在启用事件时使用。如需更多信息,请参阅"配置 PTP 快速事件通知发布程序"。
先决条件
- 在裸机集群主机上安装 Intel Westport Channel 网络接口。
-
安装 OpenShift CLI (
oc) 。 -
以具有
cluster-admin特权的用户身份登录。 - 安装 PTP Operator。
流程
创建
PtpConfig资源。例如:将以下 YAML 保存到
grandmaster-clock-ptp-config.yaml文件中:PTP grandmaster 时钟配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 CR:
oc create -f grandmaster-clock-ptp-config.yaml
$ oc create -f grandmaster-clock-ptp-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查
PtpConfig配置集是否已应用到节点。运行以下命令,获取
openshift-ptp命名空间中的 pod 列表:oc get pods -n openshift-ptp -o wide
$ oc get pods -n openshift-ptp -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-74m2g 3/3 Running 3 4d15h 10.16.230.7 compute-1.example.com ptp-operator-5f4f48d7c-x7zkf 1/1 Running 1 4d15h 10.128.1.145 compute-1.example.com
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-74m2g 3/3 Running 3 4d15h 10.16.230.7 compute-1.example.com ptp-operator-5f4f48d7c-x7zkf 1/1 Running 1 4d15h 10.128.1.145 compute-1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查配置集是否正确。检查与
PtpConfig配置集中指定的节点对应的linuxptp守护进程的日志。运行以下命令:oc logs linuxptp-daemon-74m2g -n openshift-ptp -c linuxptp-daemon-container
$ oc logs linuxptp-daemon-74m2g -n openshift-ptp -c linuxptp-daemon-containerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.5.3. 将 linuxptp 服务配置为常规时钟 复制链接链接已复制到粘贴板!
您可以通过创建 PtpConfig 自定义资源(CR)对象将 linuxptp 服务(ptp4l、phc2sys)配置为常规时钟。
使用 PtpConfig CR 示例,将 linuxptp 服务配置为特定硬件和环境的普通时钟。这个示例 CR 没有配置 PTP 快速事件。要配置 PTP 快速事件,请为 ptp4lOpts、ptp4lConf 和 ptpClockThreshold 设置适当的值。只有在启用事件时才需要 ptpClockThreshold。如需更多信息,请参阅"配置 PTP 快速事件通知发布程序"。
先决条件
-
安装 OpenShift CLI(
oc)。 -
以具有
cluster-admin特权的用户身份登录。 - 安装 PTP Operator。
流程
创建以下
PtpConfigCR,然后在ordinary-clock-ptp-config.yaml文件中保存 YAML。PTP 普通时钟配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表 15.1. PTP 普通时钟 CR 配置选项 自定义资源字段 描述 namePtpConfigCR 的名称。配置集指定包括一个或多个
profile的数组。每个配置集的名称都需要是唯一的。interface指定
ptp4l服务要使用的网络接口,如ens787f1。ptp4lOpts为
ptp4l服务指定系统配置选项,例如-2来选择 IEEE 802.3 网络传输。该选项不应包含网络接口名称-i <interface>和服务配置文件-f /etc/ptp4l.conf,因为网络接口名称和服务配置文件会被自动附加。附加--summary_interval -4来对此接口使用 PTP 快速事件。phc2sysOpts为
phc2sys服务指定系统配置选项。如果此字段为空,PTP Operator 不会启动phc2sys服务。对于 Intel Columbiaville 800 Series NIC,将phc2sysOpts选项设置为-a -r -m -n 24 -N 8 -R 16.-m将消息输出到stdout。linuxptp-daemonDaemonSet解析日志并生成 Prometheus 指标。ptp4lConf指定一个字符串,其中包含要替换默认的
/etc/ptp4l.conf文件的配置。要使用默认配置,请将字段留空。tx_timestamp_timeout对于 Intel Columbiaville 800 系列 NIC,将
tx_timestamp_timeout设置为50。boundary_clock_jbod对于 Intel Columbiaville 800 系列 NIC,将
boundary_clock_jbod设置为0。ptpSchedulingPolicyptp4l和phc2sys进程的调度策略。默认值为SCHED_OTHER。在支持 FIFO 调度的系统上使用SCHED_FIFO。ptpSchedulingPriority当
ptpSchedulingPolicy设置为SCHED_FIFO时,用于为ptp4l和phc2sys进程设置 FIFO 优先级的整数值(1 到 65)。当ptpSchedulingPolicy设置为SCHED_OTHER时,不使用ptpSchedulingPriority字段。ptpClockThreshold可选。如果没有
ptpClockThreshold,用于ptpClockThreshold字段的默认值。ptpClockThreshold配置在触发 PTP 时间前,PTP master 时钟已断开连接的时长。holdOverTimeout是在 PTP master clock 断开连接时,PTP 时钟事件状态更改为FREERUN前的时间值(以秒为单位)。maxOffsetThreshold和minOffsetThreshold设置以纳秒为单位,它们与CLOCK_REALTIME(phc2sys) 或 master 偏移 (ptp4l) 的值进行比较。当ptp4l或phc2sys偏移值超出这个范围时,PTP 时钟状态被设置为FREERUN。当偏移值在这个范围内时,PTP 时钟状态被设置为LOCKED。建议指定包括一个或多个
recommend对象的数组,该数组定义了如何将配置集应用到节点的规则。.recommend.profile指定在
profile部分定义的.recommend.profile对象名称。.recommend.priority对于普通时钟,将
.recommend.priority设置为0。.recommend.match使用
nodeLabel或nodeName值指定.recommend.match规则。.recommend.match.nodeLabel通过
oc get nodes --show-labels命令,使用来自节点对象的node.Labels的key设置nodeLabel。例如,node-role.kubernetes.io/worker。.recommend.match.nodeName使用
oc get nodes命令,将nodeName设置为来自节点对象的node.Name值。例如,compute-1.example.com。运行以下命令来创建
PtpConfigCR:oc create -f ordinary-clock-ptp-config.yaml
$ oc create -f ordinary-clock-ptp-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查
PtpConfig配置集是否已应用到节点。运行以下命令,获取
openshift-ptp命名空间中的 pod 列表:oc get pods -n openshift-ptp -o wide
$ oc get pods -n openshift-ptp -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-4xkbb 1/1 Running 0 43m 10.1.196.24 compute-0.example.com linuxptp-daemon-tdspf 1/1 Running 0 43m 10.1.196.25 compute-1.example.com ptp-operator-657bbb64c8-2f8sj 1/1 Running 0 43m 10.129.0.61 control-plane-1.example.com
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-4xkbb 1/1 Running 0 43m 10.1.196.24 compute-0.example.com linuxptp-daemon-tdspf 1/1 Running 0 43m 10.1.196.25 compute-1.example.com ptp-operator-657bbb64c8-2f8sj 1/1 Running 0 43m 10.129.0.61 control-plane-1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查配置集是否正确。检查与
PtpConfig配置集中指定的节点对应的linuxptp守护进程的日志。运行以下命令:oc logs linuxptp-daemon-4xkbb -n openshift-ptp -c linuxptp-daemon-container
$ oc logs linuxptp-daemon-4xkbb -n openshift-ptp -c linuxptp-daemon-containerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.5.4. 将 linuxptp 服务配置为边界时钟 复制链接链接已复制到粘贴板!
您可以通过创建 PtpConfig 自定义资源(CR)对象将 linuxptp 服务(ptp4l、phc2sys)配置为边界时钟。
使用 PtpConfig CR 示例,将 linuxptp 服务配置为特定硬件和环境的边界时钟。这个示例 CR 没有配置 PTP 快速事件。要配置 PTP 快速事件,请为 ptp4lOpts、ptp4lConf 和 ptpClockThreshold 设置适当的值。ptpClockThreshold 仅在启用事件时使用。如需更多信息,请参阅"配置 PTP 快速事件通知发布程序"。
先决条件
-
安装 OpenShift CLI(
oc)。 -
以具有
cluster-admin特权的用户身份登录。 - 安装 PTP Operator。
流程
创建以下
PtpConfigCR,然后在boundaries-clock-ptp-config.yaml文件中保存 YAML。PTP 边界时钟配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表 15.2. PTP 边界时钟 CR 配置选项 自定义资源字段 描述 namePtpConfigCR 的名称。配置集指定包括一个或多个
profile的数组。name指定唯一标识配置集对象的配置集对象的名称。
ptp4lOpts为
ptp4l服务指定系统配置选项。该选项不应包含网络接口名称-i <interface>和服务配置文件-f /etc/ptp4l.conf,因为网络接口名称和服务配置文件会被自动附加。ptp4lConf指定启动
ptp4l作为边界时钟所需的配置。例如,ens1f0同步来自 Pumaster 时钟,ens1f3同步连接的设备。<interface_1>接收同步时钟的接口。
<interface_2>发送同步时钟的接口。
tx_timestamp_timeout对于 Intel Columbiaville 800 系列 NIC,将
tx_timestamp_timeout设置为50。boundary_clock_jbod对于 Intel Columbiaville 800 系列 NIC,请确保
boundary_clock_jbod设置为0。对于 Intel Fortville X710 系列 NIC,请确保boundary_clock_jbod设置为1。phc2sysOpts为
phc2sys服务指定系统配置选项。如果此字段为空,PTP Operator 不会启动phc2sys服务。ptpSchedulingPolicyptp4l 和 phc2sys 进程的调度策略。默认值为
SCHED_OTHER。在支持 FIFO 调度的系统上使用SCHED_FIFO。ptpSchedulingPriority当
ptpSchedulingPolicy设置为SCHED_FIFO时,用于为ptp4l和phc2sys进程设置 FIFO 优先级的整数值(1 到 65)。当ptpSchedulingPolicy设置为SCHED_OTHER时,不使用ptpSchedulingPriority字段。ptpClockThreshold可选。如果没有
ptpClockThreshold,用于ptpClockThreshold字段的默认值。ptpClockThreshold配置在触发 PTP 时间前,PTP master 时钟已断开连接的时长。holdOverTimeout是在 PTP master clock 断开连接时,PTP 时钟事件状态更改为FREERUN前的时间值(以秒为单位)。maxOffsetThreshold和minOffsetThreshold设置以纳秒为单位,它们与CLOCK_REALTIME(phc2sys) 或 master 偏移 (ptp4l) 的值进行比较。当ptp4l或phc2sys偏移值超出这个范围时,PTP 时钟状态被设置为FREERUN。当偏移值在这个范围内时,PTP 时钟状态被设置为LOCKED。建议指定包括一个或多个
recommend对象的数组,该数组定义了如何将配置集应用到节点的规则。.recommend.profile指定在
profile部分定义的.recommend.profile对象名称。.recommend.priority使用
0到99之间的一个整数值指定priority。大数值的优先级较低,因此优先级99低于优先级10。如果节点可以根据match字段中定义的规则与多个配置集匹配,则优先级较高的配置集会应用到该节点。.recommend.match使用
nodeLabel或nodeName值指定.recommend.match规则。.recommend.match.nodeLabel通过
oc get nodes --show-labels命令,使用来自节点对象的node.Labels的key设置nodeLabel。例如,node-role.kubernetes.io/worker。.recommend.match.nodeName使用
oc get nodes命令,将nodeName设置为来自节点对象的node.Name值。例如,compute-1.example.com。运行以下命令来创建 CR:
oc create -f boundary-clock-ptp-config.yaml
$ oc create -f boundary-clock-ptp-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查
PtpConfig配置集是否已应用到节点。运行以下命令,获取
openshift-ptp命名空间中的 pod 列表:oc get pods -n openshift-ptp -o wide
$ oc get pods -n openshift-ptp -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-4xkbb 1/1 Running 0 43m 10.1.196.24 compute-0.example.com linuxptp-daemon-tdspf 1/1 Running 0 43m 10.1.196.25 compute-1.example.com ptp-operator-657bbb64c8-2f8sj 1/1 Running 0 43m 10.129.0.61 control-plane-1.example.com
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-4xkbb 1/1 Running 0 43m 10.1.196.24 compute-0.example.com linuxptp-daemon-tdspf 1/1 Running 0 43m 10.1.196.25 compute-1.example.com ptp-operator-657bbb64c8-2f8sj 1/1 Running 0 43m 10.129.0.61 control-plane-1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查配置集是否正确。检查与
PtpConfig配置集中指定的节点对应的linuxptp守护进程的日志。运行以下命令:oc logs linuxptp-daemon-4xkbb -n openshift-ptp -c linuxptp-daemon-container
$ oc logs linuxptp-daemon-4xkbb -n openshift-ptp -c linuxptp-daemon-containerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.5.5. 将 linuxptp 服务配置为双 NIC 硬件边界时钟 复制链接链接已复制到粘贴板!
使用配置为边界时钟的双 NIC 的精确时间协议(PTP)硬件只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以通过为每个 NIC 创建一个 PtpConfig 自定义资源(CR)对象,将 linuxptp 服务(ptp4l、phc2sys)配置为双 NIC 硬件的边界时钟。
双 NIC 硬件允许您将每个 NIC 连接到相同的上游领导时钟,并将每个 NIC 的 ptp4l 实例连接给下游时钟。
先决条件
-
安装 OpenShift CLI(
oc)。 -
以具有
cluster-admin特权的用户身份登录。 - 安装 PTP Operator。
流程
创建两个单独的
PtpConfigCR,每个 NIC 使用 "Configuring linuxptp 服务作为边界时钟"中的引用 CR,作为每个 CR 的基础。例如:创建
boundary-clock-ptp-config-nic1.yaml,为phc2sysOpts指定值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
boundary-clock-ptp-config-nic2.yaml,删除phc2sysOpts字段,以完全禁用第二个 NIC 的phc2sys服务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在第二个 NIC上 指定所需的接口来启动
ptp4l作为一个边境时钟。
注意您必须从第二个
PtpConfigCR 中完全删除phc2sysOpts字段,以禁用第二个 NIC 上的phc2sys服务。
运行以下命令来创建双 NIC
PtpConfigCR:创建 CR 来为第一个 NIC 配置 PTP:
oc create -f boundary-clock-ptp-config-nic1.yaml
$ oc create -f boundary-clock-ptp-config-nic1.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 CR 来为第二个 NIC 配置 PTP:
oc create -f boundary-clock-ptp-config-nic2.yaml
$ oc create -f boundary-clock-ptp-config-nic2.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查 PTP Operator 是否为两个 NIC 应用了
PtpConfigCR。检查与安装了双 NIC 硬件的节点对应的linuxptp守护进程的日志。例如,运行以下命令:oc logs linuxptp-daemon-cvgr6 -n openshift-ptp -c linuxptp-daemon-container
$ oc logs linuxptp-daemon-cvgr6 -n openshift-ptp -c linuxptp-daemon-containerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ptp4l[80828.335]: [ptp4l.1.config] master offset 5 s2 freq -5727 path delay 519 ptp4l[80828.343]: [ptp4l.0.config] master offset -5 s2 freq -10607 path delay 533 phc2sys[80828.390]: [ptp4l.0.config] CLOCK_REALTIME phc offset 1 s2 freq -87239 delay 539
ptp4l[80828.335]: [ptp4l.1.config] master offset 5 s2 freq -5727 path delay 519 ptp4l[80828.343]: [ptp4l.0.config] master offset -5 s2 freq -10607 path delay 533 phc2sys[80828.390]: [ptp4l.0.config] CLOCK_REALTIME phc offset 1 s2 freq -87239 delay 539Copy to Clipboard Copied! Toggle word wrap Toggle overflow
下表描述了您必须对引用 PTP 配置进行的更改,以便使用 Intel Columbiaville E800 系列 NIC 作为普通时钟。在应用到集群的 PtpConfig 自定义资源(CR)中进行更改。
| PTP 配置 | 推荐的设置 |
|---|---|
|
|
|
|
|
|
|
|
|
对于 phc2sysOpts,-m 会将信息输出到 stdout。linuxptp-daemon DaemonSet 解析日志并生成 Prometheus 指标。
15.5.7. 为 PTP 硬件配置 FIFO 优先级调度 复制链接链接已复制到粘贴板!
在需要低延迟性能的电信或其他部署配置中,PTP 守护进程线程在受限制的 CPU 占用空间以及剩余的基础架构组件一起运行。默认情况下,PTP 线程使用 SCHED_OTHER 策略运行。在高负载下,这些线程可能没有获得无错操作所需的调度延迟。
要缓解潜在的调度延迟错误,您可以将 PTP Operator linuxptp 服务配置为允许线程使用 SCHED_FIFO 策略运行。如果为 PtpConfig CR 设置了 SCHED_FIFO,则 ptp4l 和 phc2sys 将在 chrt 的父容器中运行,且由 PtpConfig CR 的 ptpSchedulingPriority 字段设置。
设置 ptpSchedulingPolicy 是可选的,只有在遇到延迟错误时才需要。
流程
编辑
PtpConfigCR 配置集:oc edit PtpConfig -n openshift-ptp
$ oc edit PtpConfig -n openshift-ptpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改
ptpSchedulingPolicy和ptpSchedulingPriority字段:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存并退出,以将更改应用到
PtpConfigCR。
验证
获取
linuxptp-daemonpod 的名称以及应用PtpConfigCR 的对应节点:oc get pods -n openshift-ptp -o wide
$ oc get pods -n openshift-ptp -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-gmv2n 3/3 Running 0 1d17h 10.1.196.24 compute-0.example.com linuxptp-daemon-lgm55 3/3 Running 0 1d17h 10.1.196.25 compute-1.example.com ptp-operator-3r4dcvf7f4-zndk7 1/1 Running 0 1d7h 10.129.0.61 control-plane-1.example.com
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-gmv2n 3/3 Running 0 1d17h 10.1.196.24 compute-0.example.com linuxptp-daemon-lgm55 3/3 Running 0 1d17h 10.1.196.25 compute-1.example.com ptp-operator-3r4dcvf7f4-zndk7 1/1 Running 0 1d7h 10.129.0.61 control-plane-1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
ptp4l进程是否使用更新的chrtFIFO 运行:oc -n openshift-ptp logs linuxptp-daemon-lgm55 -c linuxptp-daemon-container|grep chrt
$ oc -n openshift-ptp logs linuxptp-daemon-lgm55 -c linuxptp-daemon-container|grep chrtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
I1216 19:24:57.091872 1600715 daemon.go:285] /bin/chrt -f 65 /usr/sbin/ptp4l -f /var/run/ptp4l.0.config -2 --summary_interval -4 -m
I1216 19:24:57.091872 1600715 daemon.go:285] /bin/chrt -f 65 /usr/sbin/ptp4l -f /var/run/ptp4l.0.config -2 --summary_interval -4 -mCopy to Clipboard Copied! Toggle word wrap Toggle overflow