5.2. 配置 PTP 设备
PTP Operator 将 NodePtpDevice.ptp.openshift.io
自定义资源定义(CRD)添加到 OpenShift Container Platform。
安装后,PTP Operator 会在每个节点中搜索具有 PTP 功能的网络设备。Operator 为提供兼容 PTP 的网络设备的每个节点创建并更新 NodePtpDevice
自定义资源(CR)对象。
带有内置 PTP 功能的网络接口控制器(NIC)硬件有时需要特定于设备的配置。您可以通过在 PtpConfig
自定义资源(CR)中配置插件,将特定于硬件的 NIC 功能用于 PTP Operator 支持的硬件。linuxptp-daemon
服务使用 plugin
小节中的指定参数根据特定的硬件配置启动 linuxptp
进程(ptp4l
和 phc2sys
)。
在 OpenShift Container Platform 4.19 中,PtpConfig 插件支持 Intel E810 NIC。
5.2.1. 使用 CLI 安装 PTP Operator 复制链接链接已复制到粘贴板!
作为集群管理员,您可以使用 CLI 安装 Operator。
先决条件
- 在裸机中安装有支持 PTP 硬件的节点的集群。
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
流程
为 PTP Operator 创建命名空间。
将以下 YAML 保存到
ptp-namespace.yaml
文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
Namespace
CR:oc create -f ptp-namespace.yaml
$ oc create -f ptp-namespace.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
为 PTP Operator 创建 Operator 组。
在
ptp-operatorgroup.yaml
文件中保存以下 YAML:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
OperatorGroup
CR:oc create -f ptp-operatorgroup.yaml
$ oc create -f ptp-operatorgroup.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
订阅 PTP Operator。
将以下 YAML 保存到
ptp-sub.yaml
文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
Subscription
CR:oc create -f ptp-sub.yaml
$ oc create -f ptp-sub.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要验证是否已安装 Operator,请输入以下命令:
oc get csv -n openshift-ptp -o custom-columns=Name:.metadata.name,Phase:.status.phase
$ oc get csv -n openshift-ptp -o custom-columns=Name:.metadata.name,Phase:.status.phase
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Name Phase 4.19.0-202301261535 Succeeded
Name Phase 4.19.0-202301261535 Succeeded
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.2. 使用 Web 控制台安装 PTP Operator 复制链接链接已复制到粘贴板!
作为集群管理员,您可以使用 Web 控制台安装 PTP Operator。
如上一节所述,您必须创建命名空间和 operator 组。
流程
使用 OpenShift Container Platform Web 控制台安装 PTP Operator:
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
OperatorHub。 - 从可用的 Operator 列表中选择 PTP Operator,然后点 Install。
- 在 Install Operator 页面中,在 A specific namespace on the cluster 下选择 openshift-ptp。然后点击 Install。
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
可选:验证是否成功安装了 PTP Operator:
-
切换到 Operators
Installed Operators 页面。 确保 openshift-ptp 项目中列出的 PTP Operator 的 Status 为 InstallSucceeded。
注意在安装过程中,Operator 可能会显示 Failed 状态。如果安装过程结束后有 InstallSucceeded 信息,您可以忽略这个 Failed 信息。
如果 Operator 没有被成功安装,请按照以下步骤进行故障排除:
-
进入 Operators
Installed Operators 页面,检查 Operator Subscriptions 和 Install Plans 选项卡中的 Status 项中是否有任何错误。 -
进入 Workloads
Pods 页面,检查 openshift-ptp
项目中 pod 的日志。
-
进入 Operators
-
切换到 Operators
5.2.3. 在集群中发现支持 PTP 的网络设备 复制链接链接已复制到粘贴板!
识别集群中存在的 PTP 功能网络设备,以便您可以配置它们
先决条件
- 已安装 PTP Operator。
流程
要返回集群中具有 PTP 功能网络设备的完整列表,请运行以下命令:
oc get NodePtpDevice -n openshift-ptp -o yaml
$ oc get NodePtpDevice -n openshift-ptp -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.4. 将 linuxptp 服务配置为 grandmaster 时钟 复制链接链接已复制到粘贴板!
您可以通过创建一个配置主机 NIC 的 PtpConfig
自定义资源(CR)将 linuxptp
服务(ptp4l
、phc2sys
、ts2phc
)配置为 grandmaster 时钟(T-GM)。
ts2phc
工具允许您将系统时钟与 PTP grandmaster 时钟同步,以便节点可以将精度时钟信号流传输到下游 PTP 普通时钟和边界时钟。
使用 PtpConfig
CR 示例,将 linuxptp
服务配置为 Intel Westport Channel E810-XXVDA4T 网络接口的 T-GM。
要配置 PTP 快速事件,请为 ptp4lOpts
、ptp4lConf
和 ptpClockThreshold
设置适当的值。ptpClockThreshold
仅在启用事件时使用。如需更多信息,请参阅"配置 PTP 快速事件通知发布程序"。
先决条件
- 对于生产环境中的 T-GM 时钟,请在裸机集群主机上安装 Intel E810 Westport Channel NIC。
-
安装 OpenShift CLI (
oc
) 。 -
以具有
cluster-admin
特权的用户身份登录。 - 安装 PTP Operator。
流程
创建
PtpConfig
CR。例如:根据您的要求,为您的部署使用以下 T-GM 配置之一。将 YAML 保存到
grandmaster-clock-ptp-config.yaml
文件中:例 5.1. E810 NIC 的 PTP grandmaster 时钟配置
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于 E810 Westport Channel NIC,将
ts2phc.nmea_serialport
的值设置为/dev/gnss0
。运行以下命令来创建 CR:
oc create -f grandmaster-clock-ptp-config.yaml
$ oc create -f grandmaster-clock-ptp-config.yaml
Copy 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 wide
Copy 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.com
Copy 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-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.4.1. 将 linuxptp 服务配置为 2 E810 NIC 的 grandmaster 时钟 复制链接链接已复制到粘贴板!
您可以通过创建一个配置 NIC 的 PtpConfig
自定义资源(T-GM),将 linuxptp
服务(ptp4l
、phc2sys
、ts2phc
) 配置为 2 E810 NIC。
您可以将 linuxptp
服务配置为以下 E810 NIC 的 T-GM:
- Intel E810-XXVDA4T Westport Channel NIC
- Intel E810-CQDA2T Logan Beach NIC
对于分布式 RAN (D-RAN)用例,您可以为 2 个 NIC 配置 PTP,如下所示:
- NIC 1 与全局导航 satellite 系统(GNSS)时间源同步。
-
NIC 2 将同步到 NIC 1 提供的 1PPS 时间输出。此配置由
PtpConfig
CR 中的 PTP 硬件插件提供。
2-card PTP T-GM 配置使用 ptp4l
实例,以及一个 ts2phc
实例。ptp4l
和 ts2phc
程序都配置为在两个 PTP 硬件时钟(PHC)上运行,每个 NIC 对应一个。主机系统时钟与连接到 GNSS 时间源的 NIC 同步。
使用以下的 PtpConfig
CR 示例作为基础,为双 Intel E810 网络接口将 linuxptp
服务配置为 T-GM。
要配置 PTP 快速事件,请为 ptp4lOpts
、ptp4lConf
和 ptpClockThreshold
设置适当的值。ptpClockThreshold
仅在启用事件时使用。如需更多信息,请参阅"配置 PTP 快速事件通知发布程序"。
先决条件
- 对于生产环境中的 T-GM 时钟,请在裸机集群主机上安装两个 Intel E810 NIC。
-
安装 OpenShift CLI (
oc
) 。 -
以具有
cluster-admin
特权的用户身份登录。 - 安装 PTP Operator。
流程
创建
PtpConfig
CR。例如:将以下 YAML 保存到
grandmaster-clock-ptp-config-dual-nics.yaml
文件中:例 5.2. 用于双 E810 NIC 的 PTP grandmaster 时钟配置
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意将
ts2phc.nmea_serialport
的值设置为/dev/gnss0
。运行以下命令来创建 CR:
oc create -f grandmaster-clock-ptp-config-dual-nics.yaml
$ oc create -f grandmaster-clock-ptp-config-dual-nics.yaml
Copy 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 wide
Copy 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.com
Copy 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-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.4.2. 将 linuxptp 服务配置为 3 E810 NIC 的 grandmaster 时钟 复制链接链接已复制到粘贴板!
您可以通过创建一个配置 NIC 的 PtpConfig
自定义资源(T-GM),将 linuxptp
服务(ptp4l
、phc2sys
、ts2phc
) 配置为 3 E810 NIC。
您可以为以下 E810 NIC 将 linuxptp
服务配置为带有 3 个 NIC 的 T-GM:
- Intel E810-XXVDA4T Westport Channel NIC
- Intel E810-CQDA2T Logan Beach NIC
对于分布式 RAN (D-RAN)用例,您可以为 3 个 NIC 配置 PTP,如下所示:
- NIC 1 同步到全局导航 Satellite 系统(GNSS)
- NIC 2 和 3 与带有 1PPS 的 NIC 1 同步连接
使用 PtpConfig
CR 示例,将 linuxptp
服务配置为 3card Intel E810 T-GM。
先决条件
- 对于生产环境中的 T-GM 时钟,在裸机集群主机上安装 3 个 Intel E810 NIC。
-
安装 OpenShift CLI (
oc
) 。 -
以具有
cluster-admin
特权的用户身份登录。 - 安装 PTP Operator。
流程
创建
PtpConfig
CR。例如:将以下 YAML 保存到
three-nic-grandmaster-clock-ptp-config.yaml
文件中:例 5.3. 3 E810 NIC 的 PTP grandmaster 时钟配置
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意将
ts2phc.nmea_serialport
的值设置为/dev/gnss0
。运行以下命令来创建 CR:
oc create -f three-nic-grandmaster-clock-ptp-config.yaml
$ oc create -f three-nic-grandmaster-clock-ptp-config.yaml
Copy 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 wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-74m3q 3/3 Running 3 4d15h 10.16.230.7 compute-1.example.com ptp-operator-5f4f48d7c-x6zkn 1/1 Running 1 4d15h 10.128.1.145 compute-1.example.com
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-74m3q 3/3 Running 3 4d15h 10.16.230.7 compute-1.example.com ptp-operator-5f4f48d7c-x6zkn 1/1 Running 1 4d15h 10.128.1.145 compute-1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查配置集是否正确。运行以下命令,并检查与
PtpConfig
配置集中指定的节点对应的linuxptp
守护进程的日志:oc logs linuxptp-daemon-74m3q -n openshift-ptp -c linuxptp-daemon-container
$ oc logs linuxptp-daemon-74m3q -n openshift-ptp -c linuxptp-daemon-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.5. grandmaster clock PtpConfig 配置参考 复制链接链接已复制到粘贴板!
以下参考信息描述了 PtpConfig
自定义资源(CR)的配置选项,将 linuxptp
服务(ptp4l
、phc2sys
、ts2phc
)配置为 grandmaster 时钟。
PtpConfig CR 字段 | 描述 |
---|---|
|
指定一组
插件机制允许 PTP Operator 进行自动硬件配置。对于 Intel Westport Channel NIC 或 Intel Logan Beach NIC,当 |
|
为 |
|
指定启动 |
| 指定丢弃数据前从发送方等待传输 (TX) 时间戳的最长时间。 |
| 指定 JBOD 边界时钟时间延迟值。这个值用于更正网络时间设备之间传递的时间值。 |
|
为 注意
确保此处列出的网络接口配置为 grandmaster,并在 |
|
为 |
|
当 |
|
可选。如果 |
|
设置
|
|
为 |
|
指定包括一个或多个 |
|
指定在 |
|
使用 |
|
使用 |
|
通过 |
|
使用 |
5.2.5.1. grandmaster 时钟类同步状态参考 复制链接链接已复制到粘贴板!
下表描述了 PTP grandmaster 时钟(T-GM) gm.ClockClass
状态。时钟类状态根据其准确性和稳定性根据主要参考时间时钟(PRTC)或其他计时来源对 T-GM 时钟进行分类。
holdover 规格是 PTP 时钟可以维护同步的时间,而无需从主时间源接收更新。
时钟类状态 | 描述 |
---|---|
|
T-GM 时钟在 |
|
T-GM 时钟处于 |
|
T-GM 时钟处于 |
如需更多信息,请参阅 "Phase/time traceability information", ITU-T G.8275.1/Y.1369.1 Recommendations.
5.2.5.2. Intel E810 NIC 硬件配置参考 复制链接链接已复制到粘贴板!
使用此信息了解如何使用 Intel E810 硬件插件将 E810 网络接口配置为 PTP grandmaster 时钟。硬件固定配置决定了网络接口如何与系统中的其他组件和设备进行交互。对于外部 1PPS 信号,Intel E810 NIC 有四个连接器: SMA1
、SMA
2、U.FL1
和 U.FL2
。
硬件固定 | 推荐的设置 | 描述 |
---|---|---|
|
|
禁用 |
|
|
禁用 |
|
|
禁用 |
|
|
禁用 |
您可以使用 spec.profile.plugins.e810.pins
参数在 Intel E810 NIC 上设置 pin 配置,如下例所示:
pins: <interface_name>: <connector_name>: <function> <channel_number>
pins:
<interface_name>:
<connector_name>: <function> <channel_number>
其中:
<function>
: 指定 pin 的角色。以下值与 pin 角色关联:
-
0
: 禁用 -
1
: Rx(接收时间戳) -
2
: Tx(传输时间戳)
<channel number>
: 与物理连接器关联的数字。以下频道号与物理连接器关联:
-
1
:SMA1
或U.FL1
-
2
:SMA2
或U.FL2
示例:
-
0 1
: 禁用 pin 映射到SMA1
或U.FL1
。 -
1 2
: 将 Rx 功能分配给SMA2
或U.FL2
。
SMA1
和 U.FL1
连接器共享通道。SMA2
和 U.FL2
连接器共享通道二。
设置 spec.profile.plugins.e810.ublxCmds
参数,以在 PtpConfig
自定义资源(CR) 中配置 GNSS 时钟。
您必须配置偏移值来补偿 T-GM GPS atenna 电缆信号延迟。要配置最佳 T-GM antenna offset 值,请对 GNSS atenna 电缆信号延迟进行精确测量。红帽无法协助进行这个测量,或为所需的延迟偏移提供任何值。
这些 ublxCmds
小节各自对应于使用 ubxtool
命令应用到主机 NIC 的配置。例如:
- 1
- 以纳秒为单位测量 T-GM 延迟偏移。要获得所需的延迟偏移值,您必须使用外部测试设备测量电缆延迟。
下表描述了等效的 ubxtool
命令:
ubxtool 命令 | 描述 |
---|---|
|
启用一个tenna voltage 控制,允许在 |
| 启用 atenna 接收 GPS 信号。 |
| 配置 atenna 以接收来自 Galileo GPS satellite 的信号。 |
| 禁用 atenna 从 GLONASS GPS satellite 接收信号。 |
| 禁用 atenna 从 BeiDou GPS satellite 接收信号。 |
| 禁用 atenna 从 SBAS GPS satellite 接收信号。 |
| 配置 GNSS 接收器调查进程,以提高其初始位置估算。这可能需要 24 小时才能获得最佳结果。 |
| 对硬件运行单个自动扫描,并报告 NIC 状态和配置设置。 |
5.2.5.3. 双 E810 NIC 配置参考 复制链接链接已复制到粘贴板!
使用这些信息了解如何使用 Intel E810 硬件插件将 E810 网络接口配置为 PTP grandmaster 时钟 (T-GM)。
在配置双 NIC 集群主机前,您必须使用 1PPS faceplace 连接将两个 NIC 与 SMA1 电缆连接。
当您配置双 NIC T-GM 时,您需要补补使用 SMA1 连接端口连接 NIC 时发生的 1PPS 信号延迟。电缆长度、基线温度、组件和制造容错等各种因素可能会影响信号延迟。要满足延迟要求,您必须计算用于偏移信号延迟的特定值。
PtpConfig 字段 | 描述 |
---|---|
| 使用 PTP Operator E810 硬件插件配置 E810 硬件固定。
|
|
使用 |
|
将 |
spec.profile.plugins.e810.pins
列表中的每个值都遵循 <function>
<channel_number>
格式。
其中:
<function>
: 指定 pin 角色。以下值与 pin 角色关联:
-
0
: 禁用 -
1
: Receive (Rx) – 用于 1PPS IN -
2
: Transmit (Tx) – 用于1PPS OUT
<channel_number>
: 与物理连接器关联的数字。以下频道号与物理连接器关联:
-
1
:SMA1
或U.FL1
-
2
:SMA2
或U.FL2
示例:
-
2 1
: 在SMA1
中启用1PPS OUT
(Tx)。 -
1 1
: 在SMA1
中启用1PPS IN
(Rx)
PTP Operator 将这些值传递给 Intel E810 硬件插件,并将其写入每个 NIC 上的 sysfs pin 配置接口。
5.2.5.4. 3-card E810 NIC 配置参考 复制链接链接已复制到粘贴板!
使用此信息了解如何将 3 E810 NIC 配置为 PTP grandmaster 时钟 (T-GM)。
在配置 3card 集群主机前,您必须使用 1PPS faceplate 连接 3 个 NIC。主 NIC 1PPS_out
输出提供其他 2 NIC。
当您配置 3 个卡 T-GM 时,您需要使用 SMA1 连接端口连接 NIC 时发生 1PPS 信号延迟。电缆长度、基线温度、组件和制造容错等各种因素可能会影响信号延迟。要满足延迟要求,您必须计算用于偏移信号延迟的特定值。
PtpConfig 字段 | 描述 |
---|---|
| 使用 PTP Operator E810 硬件插件配置 E810 硬件固定。
|
|
使用 |
|
将 |
5.2.6. 在有 GNSS 作为源时在 grandmaster 时钟中延续 复制链接链接已复制到粘贴板!
holdover 允许 grandmaster (T-GM)时钟在全局导航 satellite 系统(GNSS)源不可用时维护同步性能。在此期间,T-GM 时钟依赖于其内部 oscillator 并保存参数,以减少时间中断。
您可以通过在 PTPConfig
自定义资源(CR)中配置以下 holdover 参数来定义保存的行为:
MaxInSpecOffset
-
以纳秒为单位指定允许的最大偏移量。如果 T-GM 时钟超过
MaxInSpecOffset
值,它将过渡到FREERUN
状态(时钟状态gm.ClockClass 248
)。 LocalHoldoverTimeout
-
指定在过渡到
FREERUN
状态前 T-GM 时钟保持处于保存状态的最长持续时间(以秒为单位)。 LocalMaxHoldoverOffSet
- 指定 T-GM 时钟可在延续状态以纳秒为单位访问的最大偏移量。
如果 MaxInSpecOffset
值小于 LocalMaxHoldoverOffset
值,并且 T-GM 时钟超过最大偏移值,T-GM 时钟将从 holdover 状态转换为 FREERUN
状态。
如果 LocalMaxHoldoverOffSet
值小于 MaxInSpecOffset
值,则在时钟达到最大偏移前发生 holdover 超时。要解决这个问题,将 MaxInSpecOffset
字段和 LocalMaxHoldoverOffset
字段设置为相同的值。
有关时钟类状态的详情,请参考 "Grandmaster 时钟类同步状态参考" 文档。
T-GM 时钟使用 holdover 参数 LocalMaxHoldoverOffSet
和 LocalHoldoverTimeout
来计算 slope。slope 是阶段偏移随时间变化的速度。它衡量每秒的偏移(纳秒为单位),其中设置的值代表在一个给定时间段内偏移量增加了多少。
T-GM 时钟使用 slope 值来预测和补偿时间偏差,从而减少了维护期间的时间中断。T-GM 时钟使用以下公式来计算 slope:
Slope =
localMaxHoldoverOffSet
/localHoldoverTimeout
例如,如果
LocalHoldOverTimeout
参数设置为 60 秒,并且LocalMaxHoldoverOffset
参数设置为 3000 纳秒,则 slope 计算如下:slope = 3000 纳秒 / 60 秒 = 每秒 50纳秒
T-GM 时钟在 60 秒内达到最大偏移量。
阶段偏移从 picoseconds 转换为纳秒。因此,在 holdover 过程中计算的阶段偏移以纳秒表示,生成的 slope 以每秒纳秒表示。
下图演示了 T-GM 时钟中的 holdover 行为,使用 GNSS 作为源:
图 5.5. 保存在 T-GM 时钟中,使用 GNSS 作为源
GNSS 信号丢失,从而导致 T-GM 时钟进入
HOLDOVER
模式。T-GM 时钟使用其内部时钟保持时间准确性。
GNSS 信号已被恢复,T-GM 时钟重新进入
LOCKED
模式。当恢复了 GNSS 信号时,T-GM 时钟仅在同步链中的所有依赖组件,如 ts2phc
偏移、数字阶段锁定循环 (DPLL) 阶段偏移和 GNSS 偏移都进入一个稳定的 LOCKED
模式后,才会重新进入 LOCKED
模式。
GNSS 信号再次丢失,T-GM 时钟重新进入
HOLDOVER
模式。时间错误开始增加。
由于可追溯性丢失,时间错误超过
MaxInSpecOffset
阈值。
GNSS 信号已被恢复,T-GM 时钟会恢复同步。时间错误将开始减少。
时间错误减少了,并返回到
MaxInSpecOffset
阈值内。
5.2.7. 为 PTP grandmaster 时钟配置动态秒处理 复制链接链接已复制到粘贴板!
PTP Operator 容器镜像包含最新的 leap-seconds.list
文件,该文件在发布时可用。您可以使用全局位置系统(GPS)公告将 PTP Operator 配置为自动更新闰秒文件。
闰秒信息存储在 openshift-ptp
命名空间中的名为 leap-configmap
的自动生成的 ConfigMap
资源中。PTP Operator 将 leap-configmap
资源挂载为 linuxptp-daemon
pod 中的卷,该 pod 可以被 ts2phc
进程访问。
如果 GPS satellite 广播新的闰秒数据,PTP Operator 会使用新数据更新 leap-configmap
资源。ts2phc
进程自动获取更改。
以下步骤作为参考提供。PTP Operator 的 4.19 版本默认启用自动 leap 秒管理。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您已以具有
cluster-admin
权限的用户身份登录。 - 您已在集群中安装 PTP Operator 并配置了 PTP grandmaster 时钟 (T-GM)。
流程
在
PtpConfig
CR 的phc2sysOpts
部分中配置自动步处理。设置以下选项:phc2sysOpts: -r -u 0 -m -N 8 -R 16 -S 2 -s ens2f0 -n 24
phc2sysOpts: -r -u 0 -m -N 8 -R 16 -S 2 -s ens2f0 -n 24
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在以前的版本中,T-GM 需要
phc2sys
配置 (-O -37
) 中的偏移调整才能考虑历史的秒。这已不再需要。配置 Intel e810 NIC,以便由
PtpConfig
CR 的spec.profile.plugins.e810.ublxCmds
部分中的 GPS 接收器启用定期报告NAV-TIMELS
消息。例如:- args: #ubxtool -P 29.20 -p CFG-MSG,1,38,248 - "-P" - "29.20" - "-p" - "CFG-MSG,1,38,248"
- args: #ubxtool -P 29.20 -p CFG-MSG,1,38,248 - "-P" - "29.20" - "-p" - "CFG-MSG,1,38,248"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证配置的 T-GM 是否收到来自连接的 GPS 的
NAV-TIMELS
消息。运行以下命令:oc -n openshift-ptp -c linuxptp-daemon-container exec -it $(oc -n openshift-ptp get pods -o name | grep daemon) -- ubxtool -t -p NAV-TIMELS -P 29.20
$ oc -n openshift-ptp -c linuxptp-daemon-container exec -it $(oc -n openshift-ptp get pods -o name | grep daemon) -- ubxtool -t -p NAV-TIMELS -P 29.20
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
leap-configmap
资源是否已由 PTP Operator 成功生成,并且使用最新版本的 leap-seconds.list 保持最新状态。运行以下命令:oc -n openshift-ptp get configmap leap-configmap -o jsonpath='{.data.<node_name>}'
$ oc -n openshift-ptp get configmap leap-configmap -o jsonpath='{.data.<node_name>}'
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.8. 将 linuxptp 服务配置为边界时钟 复制链接链接已复制到粘贴板!
您可以通过创建 PtpConfig
自定义资源(CR)对象将 linuxptp
服务(ptp4l
、phc2sys
)配置为边界时钟。
使用 PtpConfig
CR 示例,将 linuxptp
服务配置为特定硬件和环境的边界时钟。这个示例 CR 没有配置 PTP 快速事件。要配置 PTP 快速事件,请为 ptp4lOpts
、ptp4lConf
和 ptpClockThreshold
设置适当的值。ptpClockThreshold
仅在启用事件时使用。如需更多信息,请参阅"配置 PTP 快速事件通知发布程序"。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 安装 PTP Operator。
流程
创建以下
PtpConfig
CR,然后在boundaries-clock-ptp-config.yaml
文件中保存 YAML。PTP 边界时钟配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表 5.7. PTP 边界时钟 CR 配置选项 CR 字段 描述 name
PtpConfig
CR 的名称。配置集
指定包括一个或多个
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
服务。ptpSchedulingPolicy
ptp4l 和 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.yaml
Copy 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 wide
Copy 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.com
Copy 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-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.8.1. 将 linuxptp 服务配置为双 NIC 硬件的边界时钟 复制链接链接已复制到粘贴板!
您可以通过为每个 NIC 创建一个 PtpConfig
自定义资源(CR)对象,将 linuxptp
服务(ptp4l
、phc2sys
)配置为双 NIC 硬件的边界时钟。
双 NIC 硬件允许您将每个 NIC 连接到相同的上游领导时钟,并将每个 NIC 的 ptp4l
实例连接给下游时钟。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 安装 PTP Operator。
流程
创建两个单独的
PtpConfig
CR,每个 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
作为一个边境时钟。
注意您必须从第二个
PtpConfig
CR 中完全删除phc2sysOpts
字段,以禁用第二个 NIC 上的phc2sys
服务。
运行以下命令来创建双 NIC
PtpConfig
CR:创建 CR 来为第一个 NIC 配置 PTP:
oc create -f boundary-clock-ptp-config-nic1.yaml
$ oc create -f boundary-clock-ptp-config-nic1.yaml
Copy 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查 PTP Operator 是否为两个 NIC 应用了
PtpConfig
CR。检查与安装了双 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-container
Copy 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 539
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以将 linuxptp
服务 ptp4l
和 phc2sys
配置为双 PTP 边界时钟 (T-BC) 的高可用性 (HA) 系统时钟。
高可用性系统时钟使用来自双 NIC Intel E810 Salem 频道硬件的多个时间源,配置为两个边界时钟。两个边界时钟实例参与 HA 设置,每个设置都有自己的配置 profile。您可以将每个 NIC 连接到相同的上游领导时钟,每个 NIC 为下游时钟提供单独的 ptp4l
实例。
创建两个 PtpConfig
自定义资源 (CR) 对象,将 NIC 配置为 T-BC 和第三个 PtpConfig
CR,以配置两个 NIC 之间的高可用性。
您可以在配置 HA 的 PtpConfig
CR 中设置 phc2SysOpts
选项。在 PtpConfig CR 中将 phc2sysOpts
字段设置为配置两个 NIC 的 PtpConfig
CR 中的空字符串。这可防止为两个配置集设置单独的 phc2sys
进程。
第三个 PtpConfig
CR 配置高度可用的系统时钟服务。CR 将 ptp4lOpts
字段设置为空字符串,以防止 ptp4l
进程运行。CR 在 spec.profile.ptpSettings.haProfiles
键下添加 ptp4l
配置的配置集,并将这些配置集的内核套接字路径传递给 phc2sys
服务。当出现 ptp4l
失败时,phc2sys
服务将切换到备份 ptp4l
配置。当主配置集再次激活时,phc2sys
服务将恢复到原始状态。
确保将 spec.recommend.priority
设置为您用来配置 HA 的所有三个 PtpConfig
CR 的值。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 安装 PTP Operator。
- 使用 Intel E810 Salem 频道双 NIC 配置集群节点。
流程
创建两个单独的
PtpConfig
CR,每个 NIC 使用"将 linuxptp 服务配置为双 NIC 硬件边界时钟"中的 CR 作为每个 CR 的引用。创建
ha-ptp-config-nic1.yaml
文件,为phc2sysOpts
字段指定一个空字符串。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 NIC 1 应用
PtpConfig
CR:oc create -f ha-ptp-config-nic1.yaml
$ oc create -f ha-ptp-config-nic1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
ha-ptp-config-nic2.yaml
文件,为phc2sysOpts
字段指定一个空字符串。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 NIC 2 应用
PtpConfig
CR:oc create -f ha-ptp-config-nic2.yaml
$ oc create -f ha-ptp-config-nic2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建配置 HA 系统时钟的
PtpConfig
CR。例如:创建
ptp-config-for-ha.yaml
文件。将haProfiles
设置为与配置两个 NIC 的PtpConfig
CR 中设置的metadata.name
字段匹配。例如:haProfiles: ha-ptp-config-nic1,ha-ptp-config-nic2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
ptp4lOpts
字段设置为空字符串。如果它不为空,p4ptl
进程开始时会带有一个严重错误。
重要在配置单个 NIC 的
PtpConfig
CR 前,不要应用高可用性PtpConfig
CR。运行以下命令来应用 HA
PtpConfig
CR:oc create -f ptp-config-for-ha.yaml
$ oc create -f ptp-config-for-ha.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证 PTP Operator 是否已正确应用
PtpConfig
CR。执行以下步骤:运行以下命令,获取
openshift-ptp
命名空间中的 pod 列表:oc get pods -n openshift-ptp -o wide
$ oc get pods -n openshift-ptp -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-4xkrb 1/1 Running 0 43m 10.1.196.24 compute-0.example.com ptp-operator-657bbq64c8-2f8sj 1/1 Running 0 43m 10.129.0.61 control-plane-1.example.com
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-4xkrb 1/1 Running 0 43m 10.1.196.24 compute-0.example.com ptp-operator-657bbq64c8-2f8sj 1/1 Running 0 43m 10.129.0.61 control-plane-1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意应该只有一个
linuxptp-daemon
pod。运行以下命令,检查配置集是否正确。检查与
PtpConfig
配置集中指定的节点对应的linuxptp
守护进程的日志。oc logs linuxptp-daemon-4xkrb -n openshift-ptp -c linuxptp-daemon-container
$ oc logs linuxptp-daemon-4xkrb -n openshift-ptp -c linuxptp-daemon-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.9. 将 linuxptp 服务配置为常规时钟 复制链接链接已复制到粘贴板!
您可以通过创建 PtpConfig
自定义资源(CR)对象将 linuxptp
服务(ptp4l
、phc2sys
)配置为常规时钟。
使用 PtpConfig
CR 示例,将 linuxptp
服务配置为特定硬件和环境的普通时钟。这个示例 CR 没有配置 PTP 快速事件。要配置 PTP 快速事件,请为 ptp4lOpts
、ptp4lConf
和 ptpClockThreshold
设置适当的值。只有在启用事件时才需要 ptpClockThreshold
。如需更多信息,请参阅"配置 PTP 快速事件通知发布程序"。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 安装 PTP Operator。
流程
创建以下
PtpConfig
CR,然后在ordinary-clock-ptp-config.yaml
文件中保存 YAML。PTP 普通时钟配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表 5.8. PTP 普通时钟 CR 配置选项 CR 字段 描述 name
PtpConfig
CR 的名称。配置集
指定包括一个或多个
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-daemon
DaemonSet
解析日志并生成 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。
ptpSchedulingPolicy
ptp4l
和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
。运行以下命令来创建
PtpConfig
CR:oc create -f ordinary-clock-ptp-config.yaml
$ oc create -f ordinary-clock-ptp-config.yaml
Copy 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 wide
Copy 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.com
Copy 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-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
下表描述了您必须对引用 PTP 配置所做的更改,以使用 Intel Columbiaville E800 系列 NIC 作为普通时钟。在应用到集群的 PtpConfig
自定义资源(CR)中进行更改。
PTP 配置 | 推荐的设置 |
---|---|
|
|
|
|
|
|
对于 phc2sysOpts
,-m
会将信息输出到 stdout
。linuxptp-daemon
DaemonSet
解析日志并生成 Prometheus 指标。
5.2.9.2. 将 linuxptp 服务配置为具有双端口 NIC 冗余的普通时钟 复制链接链接已复制到粘贴板!
您可以通过创建 PtpConfig
自定义资源(CR)对象,将 linuxptp
服务(ptp4l
、phc2sys
)配置为带有双端口 NIC 冗余的普通时钟。在普通时钟的双端口 NIC 配置中,如果一个端口失败,待机端口会接管,维护 PTP 时间同步。
将 linuxptp 服务配置为带有双端口 NIC 冗余的普通时钟只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 安装 PTP Operator。
- 节点使用带有双端口 NIC 的 x86_64 架构。
流程
创建以下
PtpConfig
CR,然后在oc-dual-port-ptp-config.yaml
文件中保存 YAML。PTP 普通时钟双端口配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
PtpConfig
CR:oc create -f oc-dual-port-ptp-config.yaml
$ oc create -f oc-dual-port-ptp-config.yaml
Copy 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 wide
Copy 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.com
Copy 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-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.10. 为 PTP 硬件配置 FIFO 优先级调度 复制链接链接已复制到粘贴板!
在需要低延迟性能的电信或其他部署类型中,PTP 守护进程线程在受限的 CPU 占用空间以及剩余的基础架构组件一起运行。默认情况下,PTP 线程使用 SCHED_OTHER
策略运行。在高负载下,这些线程可能没有获得无错操作所需的调度延迟。
要缓解潜在的调度延迟错误,您可以将 PTP Operator linuxptp
服务配置为允许线程使用 SCHED_FIFO
策略运行。如果为 PtpConfig
CR 设置了 SCHED_FIFO
,则 ptp4l
和 phc2sys
将在 chrt
的父容器中运行,且由 PtpConfig
CR 的 ptpSchedulingPriority
字段设置。
设置 ptpSchedulingPolicy
是可选的,只有在遇到延迟错误时才需要。
流程
编辑
PtpConfig
CR 配置集:oc edit PtpConfig -n openshift-ptp
$ oc edit PtpConfig -n openshift-ptp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更改
ptpSchedulingPolicy
和ptpSchedulingPriority
字段:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存并退出,以将更改应用到
PtpConfig
CR。
验证
获取
linuxptp-daemon
pod 的名称以及应用PtpConfig
CR 的对应节点:oc get pods -n openshift-ptp -o wide
$ oc get pods -n openshift-ptp -o wide
Copy 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.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
ptp4l
进程是否使用更新的chrt
FIFO 运行: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 chrt
Copy 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 -m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.11. 为 linuxptp 服务配置日志过滤 复制链接链接已复制到粘贴板!
linuxptp
守护进程生成可用于调试目的的日志。在具有有限存储容量的电信或其他部署类型中,这些日志可以添加到存储要求中。
要减少数量日志消息,您可以配置 PtpConfig
自定义资源 (CR) 来排除报告 master offset
值的日志消息。master offset
日志消息以纳秒为单位报告当前节点时钟和 master 时钟之间的区别。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 安装 PTP Operator。
流程
编辑
PtpConfig
CR:oc edit PtpConfig -n openshift-ptp
$ oc edit PtpConfig -n openshift-ptp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
spec.profile
中,添加ptpSettings.logReduce
规格,并将值设为true
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意为了进行调试,您可以将此规格恢复到
False
,使其包含 master 偏移消息。-
保存并退出,以将更改应用到
PtpConfig
CR。
验证
获取
linuxptp-daemon
pod 的名称以及应用PtpConfig
CR 的对应节点:oc get pods -n openshift-ptp -o wide
$ oc get pods -n openshift-ptp -o wide
Copy 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.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 master 偏移信息是否不包括在日志中:
oc -n openshift-ptp logs <linux_daemon_container> -c linuxptp-daemon-container | grep "master offset"
$ oc -n openshift-ptp logs <linux_daemon_container> -c linuxptp-daemon-container | grep "master offset"
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- <linux_daemon_container> 是
linuxptp-daemon
pod 的名称,如linuxptp-daemon-gmv2n
。
当您配置
logReduce
规格时,这个命令会在linuxptp
守护进程日志中报告任何master offset
实例。
5.2.12. 常见 PTP Operator 故障排除 复制链接链接已复制到粘贴板!
通过执行以下步骤排除 PTP Operator 中的常见问题。
先决条件
-
安装 OpenShift Container Platform CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 使用支持 PTP 的主机在裸机集群中安装 PTP Operator。
流程
检查集群中为配置的节点成功部署了 Operator 和操作对象。
oc get pods -n openshift-ptp -o wide
$ oc get pods -n openshift-ptp -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-lmvgn 3/3 Running 0 4d17h 10.1.196.24 compute-0.example.com linuxptp-daemon-qhfg7 3/3 Running 0 4d17h 10.1.196.25 compute-1.example.com ptp-operator-6b8dcbf7f4-zndk7 1/1 Running 0 5d7h 10.129.0.61 control-plane-1.example.com
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-lmvgn 3/3 Running 0 4d17h 10.1.196.24 compute-0.example.com linuxptp-daemon-qhfg7 3/3 Running 0 4d17h 10.1.196.25 compute-1.example.com ptp-operator-6b8dcbf7f4-zndk7 1/1 Running 0 5d7h 10.129.0.61 control-plane-1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意当启用 PTP fast 事件总线时,就绪的
linuxptp-daemon
pod 的数量是3/3
。如果没有启用 PTP fast 事件总线,则会显示2/2
。检查集群中是否已找到支持的硬件。
oc -n openshift-ptp get nodeptpdevices.ptp.openshift.io
$ oc -n openshift-ptp get nodeptpdevices.ptp.openshift.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查节点的可用 PTP 网络接口:
oc -n openshift-ptp get nodeptpdevices.ptp.openshift.io <node_name> -o yaml
$ oc -n openshift-ptp get nodeptpdevices.ptp.openshift.io <node_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
- <node_name>
指定您要查询的节点,例如
compute-0.example.com
。输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
通过访问对应节点的
linuxptp-daemon
pod,检查 PTP 接口是否已与主时钟成功同步。运行以下命令来获取
linuxptp-daemon
pod 的名称以及您要排除故障的对应节点:oc get pods -n openshift-ptp -o wide
$ oc get pods -n openshift-ptp -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-lmvgn 3/3 Running 0 4d17h 10.1.196.24 compute-0.example.com linuxptp-daemon-qhfg7 3/3 Running 0 4d17h 10.1.196.25 compute-1.example.com ptp-operator-6b8dcbf7f4-zndk7 1/1 Running 0 5d7h 10.129.0.61 control-plane-1.example.com
NAME READY STATUS RESTARTS AGE IP NODE linuxptp-daemon-lmvgn 3/3 Running 0 4d17h 10.1.196.24 compute-0.example.com linuxptp-daemon-qhfg7 3/3 Running 0 4d17h 10.1.196.25 compute-1.example.com ptp-operator-6b8dcbf7f4-zndk7 1/1 Running 0 5d7h 10.129.0.61 control-plane-1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在远程 shell 到所需的
linuxptp-daemon
容器:oc rsh -n openshift-ptp -c linuxptp-daemon-container <linux_daemon_container>
$ oc rsh -n openshift-ptp -c linuxptp-daemon-container <linux_daemon_container>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
- <linux_daemon_container>
-
您要诊断的容器,如
linuxptp-daemon-lmvgn
。
在与
linuxptp-daemon
容器的远程 shell 连接中,使用 PTP Management Client (pmc
) 工具诊断网络接口。运行以下pmc
命令,以检查 PTP 设备的同步状态,如ptp4l
。pmc -u -f /var/run/ptp4l.0.config -b 0 'GET PORT_DATA_SET'
# pmc -u -f /var/run/ptp4l.0.config -b 0 'GET PORT_DATA_SET'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当节点成功同步到主时钟时的输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
对于 GNSS-sourced grandmaster 时钟,运行以下命令来验证 in-tree NIC ice 驱动程序是否正确,例如:
oc rsh -n openshift-ptp -c linuxptp-daemon-container linuxptp-daemon-74m2g ethtool -i ens7f0
$ oc rsh -n openshift-ptp -c linuxptp-daemon-container linuxptp-daemon-74m2g ethtool -i ens7f0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
driver: ice version: 5.14.0-356.bz2232515.el9.x86_64 firmware-version: 4.20 0x8001778b 1.3346.0
driver: ice version: 5.14.0-356.bz2232515.el9.x86_64 firmware-version: 4.20 0x8001778b 1.3346.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 GNSS-sourced grandmaster 时钟,请验证
linuxptp-daemon
容器是否从 GNSS antenna 接收信号。如果容器没有收到 GNSS 信号,则不会填充/dev/gnss0
文件。要验证,请运行以下命令:oc rsh -n openshift-ptp -c linuxptp-daemon-container linuxptp-daemon-jnz6r cat /dev/gnss0
$ oc rsh -n openshift-ptp -c linuxptp-daemon-container linuxptp-daemon-jnz6r cat /dev/gnss0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
$GNRMC,125223.00,A,4233.24463,N,07126.64561,W,0.000,,300823,,,A,V*0A $GNVTG,,T,,M,0.000,N,0.000,K,A*3D $GNGGA,125223.00,4233.24463,N,07126.64561,W,1,12,99.99,98.6,M,-33.1,M,,*7E $GNGSA,A,3,25,17,19,11,12,06,05,04,09,20,,,99.99,99.99,99.99,1*37 $GPGSV,3,1,10,04,12,039,41,05,31,222,46,06,50,064,48,09,28,064,42,1*62
$GNRMC,125223.00,A,4233.24463,N,07126.64561,W,0.000,,300823,,,A,V*0A $GNVTG,,T,,M,0.000,N,0.000,K,A*3D $GNGGA,125223.00,4233.24463,N,07126.64561,W,1,12,99.99,98.6,M,-33.1,M,,*7E $GNGSA,A,3,25,17,19,11,12,06,05,04,09,20,,,99.99,99.99,99.99,1*37 $GPGSV,3,1,10,04,12,039,41,05,31,222,46,06,50,064,48,09,28,064,42,1*62
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.13. 在 Intel 800 系列 NIC 中获取 CGU 的 DPLL 固件版本 复制链接链接已复制到粘贴板!
您可以通过打开 debug shell 到集群节点并查询 NIC 硬件,在 Intel 800 系列 NIC 中获取 Clock Generation Unit (CGU) 的数字签名循环 (DPLL) 固件版本。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您已以具有
cluster-admin
权限的用户身份登录。 - 您已在集群主机中安装了 Intel 800 系列 NIC。
- 您已在带有支持 PTP 的主机的裸机集群中安装 PTP Operator。
流程
运行以下命令来启动 debug pod:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
- <node_name>
- 是安装 Intel 800 系列 NIC 的节点。
使用
devlink
工具以及安装 NIC 的总线和设备名称,检查 NIC 中的 CGU 固件版本。例如,运行以下命令:devlink dev info <bus_name>/<device_name> | grep cgu
sh-4.4# devlink dev info <bus_name>/<device_name> | grep cgu
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
- <bus_name>
-
是安装 NIC 的总线。例如,
pci
。 - <device_name>
-
是 NIC 设备名称。例如,
0000:51:00.0
。
输出示例
cgu.id 36 fw.cgu 8032.16973825.6021
cgu.id 36
1 fw.cgu 8032.16973825.6021
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意固件版本的每个版本号部分都包括了前导和 3 个八位字节位。数字
16973825
的二进制格式是0001 0000 0011 0000 0000 0000 0001
。使用二进制值来解码固件版本。例如:Expand 表 5.10. DPLL 固件版本 二进制部分 十进制值 0001
1
0000 0011
3
0000 0000
0
0000 0001
1
5.2.14. 收集 PTP Operator 数据 复制链接链接已复制到粘贴板!
您可以使用 oc adm must-gather
命令收集有关集群的信息,包括与 PTP Operator 关联的功能和对象。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 -
已安装 OpenShift CLI(
oc
)。 - 已安装 PTP Operator。
流程
要使用
must-gather
来收集 PTP Operator 数据,您必须指定 PTP Operatormust-gather
镜像。oc adm must-gather --image=registry.redhat.io/openshift4/ptp-must-gather-rhel9:v4.19
$ oc adm must-gather --image=registry.redhat.io/openshift4/ptp-must-gather-rhel9:v4.19
Copy to Clipboard Copied! Toggle word wrap Toggle overflow