15.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.16 中,通过 PtpConfig 插件支持 Intel E810 NIC。
				
15.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 
- 创建 - NamespaceCR:- 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 
- 创建 - OperatorGroupCR:- 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 
- 创建 - SubscriptionCR:- 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.16.0-202301261535 Succeeded - Name Phase 4.16.0-202301261535 Succeeded- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
15.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 
15.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 
15.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。
流程
- 创建 - PtpConfigCR。例如:- 根据您的要求,为您的部署使用以下 T-GM 配置之一。将 YAML 保存到 - grandmaster-clock-ptp-config.yaml文件中:- 例 15.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 
 
						您可以通过创建一个配置 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 时间输出。此配置由 PtpConfigCR 中的 PTP 硬件插件提供。
						2-card PTP T-GM 配置使用 ptp4l 实例,以及一个 ts2phc 实例。ptp4l 和 ts2phc 程序都配置为在两个 PTP 硬件时钟(PHC)上运行,每个 NIC 对应一个。主机系统时钟与连接到 GNSS 时间源的 NIC 同步。
					
							使用 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。
流程
- 创建 - PtpConfigCR。例如:- 将以下 YAML 保存到 - grandmaster-clock-ptp-config-dual-nics.yaml文件中:- 例 15.2. 用于双 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-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 
 
15.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。
流程
- 创建 - PtpConfigCR。例如:- 将以下 YAML 保存到 - three-nic-grandmaster-clock-ptp-config.yaml文件中:- 例 15.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 
 
15.2.5. grandmaster clock PtpConfig 配置参考
					以下参考信息描述了 PtpConfig 自定义资源(CR)的配置选项,将 linuxptp 服务(ptp4l、phc2sys、ts2phc)配置为 grandmaster 时钟。
				
| PtpConfig CR 字段 | 描述 | 
|---|---|
| 
									 | 
									指定一组  
									插件机制允许 PTP Operator 进行自动硬件配置。对于 Intel Westport Channel NIC,当  | 
| 
									 | 
									为  | 
| 
									 | 
									指定启动  | 
| 
									 | 指定丢弃数据前从发送方等待传输 (TX) 时间戳的最长时间。 | 
| 
									 | 指定 JBOD 边界时钟时间延迟值。这个值用于更正网络时间设备之间传递的时间值。 | 
| 
									 | 
									为  注意 
										确保此处列出的网络接口配置为 grandmaster,并在  | 
| 
									 | 
									为  | 
| 
									 | 
									当  | 
| 
									 | 
									可选。如果  | 
| 
									 | 
									设置  
									 
									 
 | 
| 
									 | 
									为  | 
| 
									 | 
									指定包括一个或多个  | 
| 
									 | 
									指定在  | 
| 
									 | 
									使用  | 
| 
									 | 
									使用  | 
| 
									 | 
									通过  | 
| 
									 | 
									使用  | 
15.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.
15.2.5.2. Intel Westport Channel E810 硬件配置参考
						使用这些信息了解如何使用 Intel E810-XXVDA4T 硬件插件 将 E810 网络接口配置为 PTP grandmaster 时钟。硬件固定配置决定了网络接口如何与系统中的其他组件和设备进行交互。E810-XXVDA4T NIC 有四个连接器用于外部 1PPS 信号:SMA1, SMA2, U.FL1, 和 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 状态和配置设置。 | 
15.2.5.3. 双 E810 Westport Channel NIC 配置参考
使用这些信息了解如何使用 Intel E810-XXVDA4T 硬件插件将 E810 网络接口配置为 PTP grandmaster 时钟(T-GM)。
在配置双 NIC 集群主机前,您必须使用 1PPS faceplace 连接将两个 NIC 与 SMA1 电缆连接。
当您配置双 NIC T-GM 时,您需要补补使用 SMA1 连接端口连接 NIC 时发生的 1PPS 信号延迟。电缆长度、基线温度、组件和制造容错等各种因素可能会影响信号延迟。要满足延迟要求,您必须计算用于偏移信号延迟的特定值。
| PtpConfig 字段 | 描述 | 
|---|---|
| 
										 | 使用 PTP Operator E810 硬件插件配置 E810 硬件固定。 
 | 
| 
										 | 
										使用  | 
| 
										 | 
										将  | 
15.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 硬件固定。 
 | 
| 
										 | 
										使用  | 
| 
										 | 
										将  | 
15.2.6. 为 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.16 版本默认启用自动润秒管理。
先决条件
- 
							已安装 OpenShift CLI(oc)。
- 
							您已以具有 cluster-admin权限的用户身份登录。
- 您已在集群中安装 PTP Operator 并配置了 PTP grandmaster 时钟 (T-GM)。
流程
- 在 - PtpConfigCR 的- 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,以便由 - PtpConfigCR 的- 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 
15.2.7. 将 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.7. PTP 边界时钟 CR 配置选项 - CR 字段 - 描述 - name- PtpConfigCR 的名称。- 配置集- 指定包括一个或多个 - 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 
 
15.2.7.1. 将 linuxptp 服务配置为双 NIC 硬件的边界时钟
						您可以通过为每个 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.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 应用了 - 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-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 配置集群节点。
流程
- 创建两个单独的 - PtpConfigCR,每个 NIC 使用"将 linuxptp 服务配置为双 NIC 硬件边界时钟"中的 CR 作为每个 CR 的引用。- 创建 - ha-ptp-config-nic1.yaml文件,为- phc2sysOpts字段指定一个空字符串。例如:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,为 NIC 1 应用 - PtpConfigCR:- 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 应用 - PtpConfigCR:- 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 系统时钟的 - PtpConfigCR。例如:- 创建 - ptp-config-for-ha.yaml文件。将- haProfiles设置为与配置两个 NIC 的- PtpConfigCR 中设置的- metadata.name字段匹配。例如:- haProfiles: ha-ptp-config-nic1,ha-ptp-config-nic2- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 将ptp4lOpts字段设置为空字符串。如果它不为空,p4ptl进程开始时会带有一个严重错误。
 
 重要- 在配置单个 NIC 的 - PtpConfigCR 前,不要应用高可用性- PtpConfigCR。- 运行以下命令来应用 HA - PtpConfigCR:- 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 是否已正确应用 - PtpConfigCR。执行以下步骤:- 运行以下命令,获取 - 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-daemonpod。
- 运行以下命令,检查配置集是否正确。检查与 - 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 
 
15.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。
流程
- 创建以下 - PtpConfigCR,然后在- ordinary-clock-ptp-config.yaml文件中保存 YAML。- PTP 普通时钟配置示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Expand - 表 15.8. PTP 普通时钟 CR 配置选项 - CR 字段 - 描述 - name- PtpConfigCR 的名称。- 配置集- 指定包括一个或多个 - 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。
- 运行以下命令来创建 - PtpConfigCR:- 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 指标。
						
15.2.9. 为 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-ptp- Copy 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 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进程是否使用更新的- 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 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 
15.2.10. 为 linuxptp 服务配置日志过滤
					linuxptp 守护进程生成可用于调试目的的日志。在具有有限存储容量的电信或其他部署类型中,这些日志可以添加到存储要求中。
				
					要减少数量日志消息,您可以配置 PtpConfig 自定义资源 (CR) 来排除报告 master offset 值的日志消息。master offset 日志消息以纳秒为单位报告当前节点时钟和 master 时钟之间的区别。
				
先决条件
- 
							安装 OpenShift CLI(oc)。
- 
							以具有 cluster-admin特权的用户身份登录。
- 安装 PTP Operator。
流程
- 编辑 - PtpConfigCR:- 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 偏移消息。
- 
							保存并退出,以将更改应用到 PtpConfigCR。
验证
- 获取 - linuxptp-daemonpod 的名称以及应用- PtpConfigCR 的对应节点:- 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-daemonpod 的名称,如linuxptp-daemon-gmv2n。
 - 当您配置 - logReduce规格时,这个命令会在- linuxptp守护进程日志中报告任何- master offset实例。
15.2.11. 常见 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-daemonpod 的数量是- 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-daemonpod,检查 PTP 接口是否已与主时钟成功同步。- 运行以下命令来获取 - linuxptp-daemonpod 的名称以及您要排除故障的对应节点:- 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 
15.2.12. 在 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 - 表 15.10. DPLL 固件版本 - 二进制部分 - 十进制值 - 0001- 1 - 0000 0011- 3 - 0000 0000- 0 - 0000 0001- 1 
15.2.13. 收集 PTP Operator 数据
					您可以使用 oc adm must-gather 命令收集有关集群的信息,包括与 PTP Operator 关联的功能和对象。
				
先决条件
- 
							您可以使用具有 cluster-admin角色的用户访问集群。
- 
							已安装 OpenShift CLI(oc)。
- 已安装 PTP Operator。
流程
- 要使用 - must-gather来收集 PTP Operator 数据,您必须指定 PTP Operator- must-gather镜像。- oc adm must-gather --image=registry.redhat.io/openshift4/ptp-must-gather-rhel9:v4.16 - $ oc adm must-gather --image=registry.redhat.io/openshift4/ptp-must-gather-rhel9:v4.16- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow