11.9. 常见 PTP Operator 故障排除
通过执行以下步骤排除 PTP Operator 中的常见问题。
先决条件
-
安装 OpenShift Container Platform CLI(
oc
)。 -
以具有
cluster-admin
权限的用户身份登录。 - 使用支持 PTP 的主机在裸机集群中安装 PTP Operator。
流程
检查集群中为配置的节点成功部署了 Operator 和操作对象。
$ oc get pods -n openshift-ptp -o wide
输出示例
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
注意当启用 PTP fast 事件总线时,就绪的
linuxptp-daemon
pod 的数量是3/3
。如果没有启用 PTP fast 事件总线,则会显示2/2
。检查集群中是否已找到支持的硬件。
$ oc -n openshift-ptp get nodeptpdevices.ptp.openshift.io
输出示例
NAME AGE control-plane-0.example.com 10d control-plane-1.example.com 10d compute-0.example.com 10d compute-1.example.com 10d compute-2.example.com 10d
检查节点的可用 PTP 网络接口:
$ oc -n openshift-ptp get nodeptpdevices.ptp.openshift.io <node_name> -o yaml
其中:
- <node_name>
指定您要查询的节点,例如
compute-0.example.com
。输出示例
apiVersion: ptp.openshift.io/v1 kind: NodePtpDevice metadata: creationTimestamp: "2021-09-14T16:52:33Z" generation: 1 name: compute-0.example.com namespace: openshift-ptp resourceVersion: "177400" uid: 30413db0-4d8d-46da-9bef-737bacd548fd spec: {} status: devices: - name: eno1 - name: eno2 - name: eno3 - name: eno4 - name: enp5s0f0 - name: enp5s0f1
通过访问对应节点的
linuxptp-daemon
pod,检查 PTP 接口是否已与主时钟成功同步。运行以下命令来获取
linuxptp-daemon
pod 的名称以及您要排除故障的对应节点:$ oc get pods -n openshift-ptp -o wide
输出示例
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
在远程 shell 到所需的
linuxptp-daemon
容器:$ oc rsh -n openshift-ptp -c linuxptp-daemon-container <linux_daemon_container>
其中:
- <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'
当节点成功同步到主时钟时的输出示例
sending: GET PORT_DATA_SET 40a6b7.fffe.166ef0-1 seq 0 RESPONSE MANAGEMENT PORT_DATA_SET portIdentity 40a6b7.fffe.166ef0-1 portState SLAVE logMinDelayReqInterval -4 peerMeanPathDelay 0 logAnnounceInterval -3 announceReceiptTimeout 3 logSyncInterval -4 delayMechanism 1 logMinPdelayReqInterval -4 versionNumber 2