9.4. Linuxptp 서비스 구성

PTP Operator는 PtpConfig.ptp.openshift.io CRD(custom resource definition)를 OpenShift Container Platform에 추가합니다. PtpConfig CR(사용자 정의 리소스)을 생성하여 Linuxptp 서비스(ptp4l, phc2sys)를 구성할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.
  • PTP Operator를 설치해야 합니다.

프로세스

  1. 다음 PtpConfig CR을 생성한 다음 YAML을 <name>-ptp-config.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
    프로필 오브젝트를 고유하게 식별하는 데 사용되는 프로필 오브젝트의 이름을 지정합니다.
    5
    ptp4l 서비스에서 사용할 네트워크 인터페이스 이름을 지정합니다(예: ens787f1).
    6
    ptp4l 서비스에 대한 시스템 구성 옵션을 지정합니다(예: -s -2). 인터페이스 이름 -i <interface> 및 서비스 구성 파일 -f /etc/ptp4l.conf는 자동으로 추가되므로 포함하지 않아야 합니다.
    7
    phc2sys 서비스에 대한 시스템 구성 옵션을 지정합니다(예: -a -r).
    8
    profile이 노드에 적용되는 방법에 대한 규칙을 정의하는 하나 이상의 recommend 오브젝트 배열을 지정합니다.
    9
    profile 섹션에 정의된 profile 오브젝트 이름을 지정합니다.
    10
    0에서 99 사이의 정수 값으로 priority를 지정합니다. 숫자가 클수록 우선순위가 낮으므로 우선순위 99는 우선순위 10보다 낮습니다. match 필드에 정의된 규칙에 따라 노드를 여러 프로필과 일치시킬 수 있는 경우 우선순위가 높은 프로필이 해당 노드에 적용됩니다.
    11
    nodeLabel 또는 nodeName으로 일치 규칙을 지정합니다.
    12
    노드 오브젝트에서 node.LabelskeynodeLabel을 지정합니다.
    13
    노드 오브젝트에서 node.Name으로 nodeName을 지정합니다.
  2. 다음 명령을 실행하여 CR을 생성합니다.

    $ oc create -f <filename> 1
    1
    <filename>을 이전 단계에서 생성한 파일 이름으로 바꿉니다.
  3. 선택 사항: PtpConfig 프로필이 nodeLabel 또는 node Name 과 일치하는 노드에 적용되는지 확인합니다.

    $ 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 Namedev-worker-0 노드에 적용되는 이름입니다.
    2
    Interfaceprofile1 인터페이스 필드에 지정된 PTP 장치입니다. ptp4l 서비스는 이 인터페이스에서 실행됩니다.
    3
    Ptp4lOptsprofile1 Ptp4lOpts 필드에 지정된 ptp4l sysconfig 옵션입니다.
    4
    Phc2sysOptsprofile1 Phc2sysOpts 필드에 지정된 phc2sys sysconfig 옵션입니다.