10.4. 配置 Linuxptp 服务

PTP Operator 将 PtpConfig.ptp.openshift.io 自定义资源定义 (CRD) 添加至 OpenShift Container Platform。您可以通过创建 PtpConfig 自定义资源(CR)对象来配置 Linuxptp 服务(ptp4l、phc2sys)。

先决条件

  • 安装 OpenShift CLI(oc)。
  • 以具有 cluster-admin 特权的用户身份登录。
  • 已安装了 PTP Operator。

流程

  1. 创建以下 PtpConfig CR,然后在 <name>-ptp-config.yaml 文件中保存 YAML。使用配置的实际名称替换 <name>

    apiVersion: ptp.openshift.io/v1
    kind: PtpConfig
    metadata:
      name: <name> 1
      namespace: openshift-ptp 2
    spec:
      profile: 3
      - name: "profile1" 4
        interface: "ens787f1" 5
        ptp4lOpts: "-s -2" 6
        phc2sysOpts: "-a -r" 7
      recommend: 8
      - profile: "profile1" 9
        priority: 10 10
        match: 11
        - nodeLabel: "node-role.kubernetes.io/worker" 12
          nodeName: "dev-worker-0" 13
    1
    PtpConfig CR 指定名称。
    2
    指定安装 PTP Operator 的命名空间。
    3
    指定包括一个或多个 profile 的数组。
    4
    指定用于唯一标识配置集(profile)对象的配置集对象名称。
    5
    指定 ptp4l 服务要使用的网络接口名称,如 ens787f1
    6
    ptp4l 服务指定系统配置选项,如 -s -2。这不应该包含接口名称 -i <interface> 和服务配置文件 -f /etc/ptp4l.conf ,因为这些文件会被自动附加。
    7
    phc2sys 服务指定系统配置选项,如 -a -r
    8
    指定包括一个或多个 recommend 对象的数组,该数组定义了如何将配置集应用到节点的规则。
    9
    指定 profile 部分中定义的 profile 对象名称。
    10
    使用 099 之间的一个整数值指定 priority。大数值的优先级较低,因此优先级 99 低于优先级 10。如果根据 match 项中定义的规则,节点可以与多个配置集相匹配,具有最高优先级的配置集将被应用到那个节点。
    11
    使用 nodeLabelnodeName 指定 match 规则。
    12
    使用节点对象中的 node.Labelskey 指定 nodeLabel
    13
    使用节点对象的 node.Name 指定 nodeName
  2. 运行以下命令来创建 CR:

    $ oc create -f <filename> 1
    1
    <filename> 替换为您在上一步中创建的文件的名称。
  3. 可选:检查 PtpConfig 配置集是否应用到与 nodeLabelnodeName 匹配的节点。

    $ oc get pods -n openshift-ptp -o wide

    输出示例

    NAME                            READY   STATUS    RESTARTS   AGE   IP               NODE           NOMINATED NODE   READINESS GATES
    linuxptp-daemon-4xkbb           1/1     Running   0          43m   192.168.111.15   dev-worker-0   <none>           <none>
    linuxptp-daemon-tdspf           1/1     Running   0          43m   192.168.111.11   dev-master-0   <none>           <none>
    ptp-operator-657bbb64c8-2f8sj   1/1     Running   0          43m   10.128.0.116     dev-master-0   <none>           <none>
    
    $ oc logs linuxptp-daemon-4xkbb -n openshift-ptp
    I1115 09:41:17.117596 4143292 daemon.go:107] in applyNodePTPProfile
    I1115 09:41:17.117604 4143292 daemon.go:109] updating NodePTPProfile to:
    I1115 09:41:17.117607 4143292 daemon.go:110] ------------------------------------
    I1115 09:41:17.117612 4143292 daemon.go:102] Profile Name: profile1 1
    I1115 09:41:17.117616 4143292 daemon.go:102] Interface: ens787f1    2
    I1115 09:41:17.117620 4143292 daemon.go:102] Ptp4lOpts: -s -2       3
    I1115 09:41:17.117623 4143292 daemon.go:102] Phc2sysOpts: -a -r     4
    I1115 09:41:17.117626 4143292 daemon.go:116] ------------------------------------
    I1115 09:41:18.117934 4143292 daemon.go:186] Starting phc2sys...
    I1115 09:41:18.117985 4143292 daemon.go:187] phc2sys cmd: &{Path:/usr/sbin/phc2sys Args:[/usr/sbin/phc2sys -a -r] Env:[] Dir: Stdin:<nil> Stdout:<nil> Stderr:<nil> ExtraFiles:[] SysProcAttr:<nil> Process:<nil> ProcessState:<nil> ctx:<nil> lookPathErr:<nil> finished:false childFiles:[] closeAfterStart:[] closeAfterWait:[] goroutine:[] errch:<nil> waitDone:<nil>}
    I1115 09:41:19.118175 4143292 daemon.go:186] Starting ptp4l...
    I1115 09:41:19.118209 4143292 daemon.go:187] ptp4l cmd: &{Path:/usr/sbin/ptp4l Args:[/usr/sbin/ptp4l -m -f /etc/ptp4l.conf -i ens787f1 -s -2] Env:[] Dir: Stdin:<nil> Stdout:<nil> Stderr:<nil> ExtraFiles:[] SysProcAttr:<nil> Process:<nil> ProcessState:<nil> ctx:<nil> lookPathErr:<nil> finished:false childFiles:[] closeAfterStart:[] closeAfterWait:[] goroutine:[] errch:<nil> waitDone:<nil>}
    ptp4l[102189.864]: selected /dev/ptp5 as PTP clock
    ptp4l[102189.886]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE
    ptp4l[102189.886]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE

    1
    Profile Name 是应用到 dev-worker-0 节点的名称。
    2
    Interface 是在 profile1 的 interface 项中指定的 PTP 设备。在这个接口中运行的 ptp4l 服务。
    3
    ptp4lOptsprofile1 中的 ptp4lOpts 项指定的 ptp4l sysconfig 选项。
    4
    Phc2sysOptsprofile1 中的 Phc2sysOpts 项指定的 phc2sys sysconfig 选项。