Menu Close

18장. 단일 노드 OpenShift에 수동으로 분산 장치 배포

이 항목의 절차에서는 설치 중에 적은 수의 단일 노드에 클러스터를 수동으로 분산 장치(DU)로 배포하는 방법을 설명합니다.

이 절차에서는 단일 노드 OpenShift 설치 방법을 설명하지 않습니다. 이것은 많은 메커니즘을 통해 수행 할 수 있습니다. 대신 설치 프로세스의 일부로 구성해야 하는 요소를 캡처하기 위한 것입니다.

  • 설치가 완료되면 단일 노드 OpenShift DU에 대한 연결을 활성화하려면 네트워킹이 필요합니다.
  • 워크로드 파티셔닝 - 설치 중에만 구성할 수 있습니다.
  • 잠재적인 재부팅 후 설치를 최소화하는 데 도움이 되는 추가 항목입니다.

18.1. 분산 장치(DU) 구성

이 섹션에서는 분산 장치(DU) 애플리케이션을 실행하는 데 필요한 기능 및 성능 요구 사항을 충족하도록 OpenShift Container Platform 클러스터의 구성 세트에 대해 설명합니다. 이 콘텐츠 중 일부는 설치 중에 적용해야 하며 다른 구성은 설치 후 적용할 수 있습니다.

단일 노드 OpenShift DU를 설치한 후 플랫폼에서 DU 워크로드를 전송할 수 있도록 추가 구성이 필요합니다.

이 섹션의 구성은 DU 워크로드에 맞게 클러스터를 구성하기 위해 설치 후 클러스터에 적용됩니다.

18.1.1. 워크로드 파티션 활성화

단일 노드 OpenShift 설치의 일부로 활성화하는 주요 기능은 워크로드 파티셔닝입니다. 이렇게 하면 플랫폼 서비스를 실행할 수 있는 코어가 제한되어 애플리케이션 페이로드에 대한 CPU 코어를 최대화합니다. 클러스터 설치 시 워크로드 파티셔닝을 구성해야 합니다.

참고

워크로드 파티션은 설치 중에 적용해야 합니다.

절차

  • 아래 base64로 인코딩된 콘텐츠에는 관리 워크로드가 제한된 CPU 세트가 포함되어 있습니다. 이 콘텐츠는 performanceprofile 에 지정된 세트와 일치하도록 조정해야 하며 클러스터의 코어 수에 맞게 정확해야 합니다.

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: master
      name: 02-master-workload-partitioning
    spec:
      config:
        ignition:
          version: 3.2.0
        storage:
          files:
          - contents:
              source: data:text/plain;charset=utf-8;base64,W2NyaW8ucnVudGltZS53b3JrbG9hZHMubWFuYWdlbWVudF0KYWN0aXZhdGlvbl9hbm5vdGF0aW9uID0gInRhcmdldC53b3JrbG9hZC5vcGVuc2hpZnQuaW8vbWFuYWdlbWVudCIKYW5ub3RhdGlvbl9wcmVmaXggPSAicmVzb3VyY2VzLndvcmtsb2FkLm9wZW5zaGlmdC5pbyIKcmVzb3VyY2VzID0geyAiY3B1c2hhcmVzIiA9IDAsICJjcHVzZXQiID0gIjAtMSw1Mi01MyIgfQo=
            mode: 420
            overwrite: true
            path: /etc/crio/crio.conf.d/01-workload-partitioning
            user:
              name: root
          - contents:
              source: data:text/plain;charset=utf-8;base64,ewogICJtYW5hZ2VtZW50IjogewogICAgImNwdXNldCI6ICIwLTEsNTItNTMiCiAgfQp9Cg==
            mode: 420
            overwrite: true
            path: /etc/kubernetes/openshift-workload-pinning
            user:
              name: root
  • /etc/crio/crio.conf.d/01-workload-partitioning 의 내용은 다음과 같아야 합니다.

    [crio.runtime.workloads.management]
    activation_annotation = "target.workload.openshift.io/management"
    annotation_prefix = "resources.workload.openshift.io"
    resources = { "cpushares" = 0, "cpuset" = "0-1,52-53" } 1
    1
    cpuset 값은 설치에 따라 달라집니다.

Hyper-Threading이 활성화된 경우 각 코어의 두 스레드를 지정합니다. cpuset 는 성능 프로필에 지정된 예약된 CPU 세트와 일치해야 합니다.

이 콘텐츠는 위의 매니페스트에서 01-workload-partitioning-content 에 인코딩되고 제공되어야 합니다.

  • /etc/kubernetes/openshift-workload-pinning 의 내용은 다음과 같아야 합니다.

    {
      "management": {
        "cpuset": "0-1,52-53" 1
      }
    }
    1
    cpuset/etc/crio/crio.conf.d/01-workload-partitioning 의 값과 일치해야 합니다.

이 콘텐츠는 base64로 인코딩되고 이전 매니페스트의 openshift-workload-pinning-content 에 제공되어야 합니다.

18.1.2. 컨테이너 마운트 네임스페이스 구성

플랫폼의 전반적인 관리 공간을 줄이기 위해 마운트 지점을 포함하도록 시스템 구성이 제공됩니다. 구성 변경이 필요하지 않습니다. 제공된 설정을 사용합니다.

apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
  labels:
    machineconfiguration.openshift.io/role: master
  name: container-mount-namespace-and-kubelet-conf-master
spec:
  config:
    ignition:
      version: 3.2.0
    storage:
      files:
      - contents:
          source: data:text/plain;charset=utf-8;base64,IyEvYmluL2Jhc2gKCmRlYnVnKCkgewogIGVjaG8gJEAgPiYyCn0KCnVzYWdlKCkgewogIGVjaG8gVXNhZ2U6ICQoYmFzZW5hbWUgJDApIFVOSVQgW2VudmZpbGUgW3Zhcm5hbWVdXQogIGVjaG8KICBlY2hvIEV4dHJhY3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaXJzdCBFeGVjU3RhcnQgc3RhbnphIGZyb20gdGhlIGdpdmVuIHN5c3RlbWQgdW5pdCBhbmQgcmV0dXJuIGl0IHRvIHN0ZG91dAogIGVjaG8KICBlY2hvICJJZiAnZW52ZmlsZScgaXMgcHJvdmlkZWQsIHB1dCBpdCBpbiB0aGVyZSBpbnN0ZWFkLCBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lZCAndmFybmFtZSciCiAgZWNobyAiRGVmYXVsdCAndmFybmFtZScgaXMgRVhFQ1NUQVJUIGlmIG5vdCBzcGVjaWZpZWQiCiAgZXhpdCAxCn0KClVOSVQ9JDEKRU5WRklMRT0kMgpWQVJOQU1FPSQzCmlmIFtbIC16ICRVTklUIHx8ICRVTklUID09ICItLWhlbHAiIHx8ICRVTklUID09ICItaCIgXV07IHRoZW4KICB1c2FnZQpmaQpkZWJ1ZyAiRXh0cmFjdGluZyBFeGVjU3RhcnQgZnJvbSAkVU5JVCIKRklMRT0kKHN5c3RlbWN0bCBjYXQgJFVOSVQgfCBoZWFkIC1uIDEpCkZJTEU9JHtGSUxFI1wjIH0KaWYgW1sgISAtZiAkRklMRSBdXTsgdGhlbgogIGRlYnVnICJGYWlsZWQgdG8gZmluZCByb290IGZpbGUgZm9yIHVuaXQgJFVOSVQgKCRGSUxFKSIKICBleGl0CmZpCmRlYnVnICJTZXJ2aWNlIGRlZmluaXRpb24gaXMgaW4gJEZJTEUiCkVYRUNTVEFSVD0kKHNlZCAtbiAtZSAnL15FeGVjU3RhcnQ9LipcXCQvLC9bXlxcXSQvIHsgcy9eRXhlY1N0YXJ0PS8vOyBwIH0nIC1lICcvXkV4ZWNTdGFydD0uKlteXFxdJC8geyBzL15FeGVjU3RhcnQ9Ly87IHAgfScgJEZJTEUpCgppZiBbWyAkRU5WRklMRSBdXTsgdGhlbgogIFZBUk5BTUU9JHtWQVJOQU1FOi1FWEVDU1RBUlR9CiAgZWNobyAiJHtWQVJOQU1FfT0ke0VYRUNTVEFSVH0iID4gJEVOVkZJTEUKZWxzZQogIGVjaG8gJEVYRUNTVEFSVApmaQo=
        mode: 493
        path: /usr/local/bin/extractExecStart
      - contents:
          source: data:text/plain;charset=utf-8;base64,IyEvYmluL2Jhc2gKbnNlbnRlciAtLW1vdW50PS9ydW4vY29udGFpbmVyLW1vdW50LW5hbWVzcGFjZS9tbnQgIiRAIgo=
        mode: 493
        path: /usr/local/bin/nsenterCmns
    systemd:
      units:
      - contents: |
          [Unit]
          Description=Manages a mount namespace that both kubelet and crio can use to share their container-specific mounts

          [Service]
          Type=oneshot
          RemainAfterExit=yes
          RuntimeDirectory=container-mount-namespace
          Environment=RUNTIME_DIRECTORY=%t/container-mount-namespace
          Environment=BIND_POINT=%t/container-mount-namespace/mnt
          ExecStartPre=bash -c "findmnt ${RUNTIME_DIRECTORY} || mount --make-unbindable --bind ${RUNTIME_DIRECTORY} ${RUNTIME_DIRECTORY}"
          ExecStartPre=touch ${BIND_POINT}
          ExecStart=unshare --mount=${BIND_POINT} --propagation slave mount --make-rshared /
          ExecStop=umount -R ${RUNTIME_DIRECTORY}
        enabled: true
        name: container-mount-namespace.service
      - dropins:
        - contents: |
            [Unit]
            Wants=container-mount-namespace.service
            After=container-mount-namespace.service

            [Service]
            ExecStartPre=/usr/local/bin/extractExecStart %n /%t/%N-execstart.env ORIG_EXECSTART
            EnvironmentFile=-/%t/%N-execstart.env
            ExecStart=
            ExecStart=bash -c "nsenter --mount=%t/container-mount-namespace/mnt \
                ${ORIG_EXECSTART}"
          name: 90-container-mount-namespace.conf
        name: crio.service
      - dropins:
        - contents: |
            [Unit]
            Wants=container-mount-namespace.service
            After=container-mount-namespace.service

            [Service]
            ExecStartPre=/usr/local/bin/extractExecStart %n /%t/%N-execstart.env ORIG_EXECSTART
            EnvironmentFile=-/%t/%N-execstart.env
            ExecStart=
            ExecStart=bash -c "nsenter --mount=%t/container-mount-namespace/mnt \
                ${ORIG_EXECSTART} --housekeeping-interval=30s"
          name: 90-container-mount-namespace.conf
        - contents: |
            [Service]
            Environment="OPENSHIFT_MAX_HOUSEKEEPING_INTERVAL_DURATION=60s"
            Environment="OPENSHIFT_EVICTION_MONITORING_PERIOD_DURATION=30s"
          name: 30-kubelet-interval-tuning.conf
        name: kubelet.service

18.1.3. SCTP(스트림 제어 전송 프로토콜) 활성화

SCTP는 RAN 애플리케이션에 사용되는 키 프로토콜입니다. 이 MachineConfig 오브젝트는 이 프로토콜을 활성화하기 위해 SCTP 커널 모듈을 노드에 추가합니다.

절차

  • 구성 변경이 필요하지 않습니다. 제공된 설정을 사용합니다.

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: master
      name: load-sctp-module
    spec:
      config:
        ignition:
          version: 2.2.0
        storage:
          files:
            - contents:
                source: data:,
                verification: {}
              filesystem: root
                mode: 420
                path: /etc/modprobe.d/sctp-blacklist.conf
            - contents:
                source: data:text/plain;charset=utf-8,sctp
              filesystem: root
                mode: 420
                path: /etc/modules-load.d/sctp-load.conf

18.1.4. Operator에 대한 OperatorGroup 생성

이 구성은 플랫폼 설치 후 구성하는데 필요한 Operator를 추가하기 위해 제공됩니다. Local Storage Operator, Logging Operator, Performance Addon Operator, PTP Operator, SRIOV Network Operator에 NamespaceOperatorGroup 오브젝트를 추가합니다.

절차

  • 구성 변경이 필요하지 않습니다. 제공된 설정을 사용합니다.

    Local Storage Operator

    apiVersion: v1
    kind: Namespace
    metadata:
      annotations:
        workload.openshift.io/allowed: management
      name: openshift-local-storage
    ---
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: openshift-local-storage
      namespace: openshift-local-storage
    spec:
      targetNamespaces:
        - openshift-local-storage

    Logging Operator

    apiVersion: v1
    kind: Namespace
    metadata:
      annotations:
        workload.openshift.io/allowed: management
      name: openshift-logging
    ---
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: cluster-logging
      namespace: openshift-logging
    spec:
      targetNamespaces:
        - openshift-logging

    Performance Addon Operator

    apiVersion: v1
    kind: Namespace
    metadata:
      annotations:
        workload.openshift.io/allowed: management
      labels:
        openshift.io/cluster-monitoring: "true"
      name: openshift-performance-addon-operator
    spec: {}
    ---
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: performance-addon-operator
      namespace: openshift-performance-addon-operator

    PTP Operator

    apiVersion: v1
    kind: Namespace
    metadata:
      annotations:
        workload.openshift.io/allowed: management
      labels:
        openshift.io/cluster-monitoring: "true"
      name: openshift-ptp
    ---
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: ptp-operators
      namespace: openshift-ptp
    spec:
      targetNamespaces:
        - openshift-ptp

    SRIOV Network Operator

    apiVersion: v1
    kind: Namespace
    metadata:
      annotations:
        workload.openshift.io/allowed: management
        name: openshift-sriov-network-operator
    ---
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: sriov-network-operators
      namespace: openshift-sriov-network-operator
    spec:
      targetNamespaces:
        - openshift-sriov-network-operator

18.1.5. Operator 구독

서브스크립션은 플랫폼 구성에 필요한 Operator를 다운로드할 수 있는 위치를 제공합니다.

절차

  • 다음 예제를 사용하여 서브스크립션을 구성합니다.

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: cluster-logging
      namespace: openshift-logging
    spec:
      channel: "stable" 1
      name: cluster-logging
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      installPlanApproval: Manual 2
    ---
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: local-storage-operator
      namespace: openshift-local-storage
    spec:
      channel: "stable" 3
      installPlanApproval: Automatic
      name: local-storage-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      installPlanApproval: Manual
    ---
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: performance-addon-operator
      namespace: openshift-performance-addon-operator
    spec:
      channel: "4.10" 4
      name: performance-addon-operator
      source: performance-addon-operator
      sourceNamespace: openshift-marketplace
      installPlanApproval: Manual
    ---
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
        name: ptp-operator-subscription
        namespace: openshift-ptp
    spec:
      channel: "stable" 5
      name: ptp-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      installPlanApproval: Manual
    ---
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: sriov-network-operator-subscription
      namespace: openshift-sriov-network-operator
    spec:
      channel: "stable" 6
      name: sriov-network-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      installPlanApproval: Manual
    1
    cluster-logging Operator를 가져올 채널을 지정합니다.
    2
    수동 또는 자동 을 지정합니다. 자동 모드에서 Operator는 레지스트리에서 사용 가능할 때 채널의 최신 버전으로 자동으로 업데이트됩니다. 수동 모드에서 새 Operator 버전은 명시적으로 승인 된 후에만 설치됩니다.
    3
    local-storage-operator Operator를 가져올 채널을 지정합니다.
    4
    performance-addon-operator Operator를 가져오려면 채널을 지정합니다.
    5
    ptp-operator Operator를 가져올 채널을 지정합니다.
    6
    sriov-network-operator Operator를 가져올 채널을 지정합니다.

18.1.6. 로컬로 로깅 구성 및 전달

단일 노드 분산 장치(DU)를 디버깅하려면 추가 분석을 위해 로그를 저장해야 합니다.

절차

  • openshift-logging 프로젝트에서 ClusterLogging 사용자 정의 리소스(CR)를 편집합니다.

    apiVersion: logging.openshift.io/v1
    kind: ClusterLogging 1
     metadata:
      name: instance
      namespace: openshift-logging
    spec:
      collection:
        logs:
          fluentd: {}
          type: fluentd
      curation:
        type: "curator"
        curator:
          schedule: "30 3 * * *"
        managementState: Managed
    ---
    apiVersion: logging.openshift.io/v1
    kind: ClusterLogForwarder 2
    metadata:
      name: instance
      namespace: openshift-logging
    spec:
      inputs:
        - infrastructure: {}
      outputs:
        - name: kafka-open
          type: kafka
          url: tcp://10.46.55.190:9092/test    3
      pipelines:
        - inputRefs:
          - audit
          name: audit-logs
          outputRefs:
          - kafka-open
        - inputRefs:
          - infrastructure
          name: infrastructure-logs
          outputRefs:
          - kafka-open
    1
    기존 인스턴스를 업데이트하거나 인스턴스가 없는 경우 만듭니다.
    2
    기존 인스턴스를 업데이트하거나 인스턴스가 없는 경우 만듭니다.
    3
    kafka 서버의 대상을 지정합니다.

18.1.7. Performance Addon Operator 구성

이는 단일 노드 분산 단위(DU)의 주요 구성 요소입니다. 많은 실시간 기능 및 서비스 보증이 여기에 구성됩니다.

절차

  • 다음 예제를 사용하여 성능 애드온을 구성합니다.

    apiVersion: performance.openshift.io/v2
    kind: PerformanceProfile
    metadata:
      name: perfprofile-policy
    spec:
      additionalKernelArgs:
        - idle=poll
        - rcupdate.rcu_normal_after_boot=0
      cpu:
        isolated: 2-19,22-39 1
        reserved: 0-1,20-21 2
      hugepages:
        defaultHugepagesSize: 1G
        pages:
          - count: 32 3
            size: 1G 4
      machineConfigPoolSelector:
        pools.operator.machineconfiguration.openshift.io/master: ""
      net:
        userLevelNetworking: true 5
      nodeSelector:
        node-role.kubernetes.io/master: ""
      numa:
        topologyPolicy: restricted
      realTimeKernel:
        enabled: true    6
1
분리된 CPU를 설정합니다. 모든 HT 쌍이 일치하는지 확인합니다.
2
예약된 CPU를 설정합니다. 이 경우 NUMA 0에 하이퍼 스레드 쌍이 할당되고 NUMA 1의 쌍이 할당됩니다.
3
대규모 페이지 크기를 설정합니다.
4
대규모 페이지 번호를 설정합니다.
5
네트워킹 인터럽트에서 CPU를 분리하려면 true 로 설정합니다.
6
실시간 Linux 커널을 설치하려면 true 로 설정합니다.

18.1.8. PTP(Precision Time Protocol) 구성

RAN은 엣지에서 PTP를 사용하여 시스템을 동기화합니다.

절차

  • 다음 예제를 사용하여 PTP를 구성합니다.

    apiVersion: ptp.openshift.io/v1
    kind: PtpConfig
    metadata:
      name: du-ptp-slave
      namespace: openshift-ptp
    spec:
      profile:
        - interface: ens5f0     1
          name: slave
          phc2sysOpts: -a -r -n 24
          ptp4lConf: |
            [global]
            #
            # Default Data Set
            #
            twoStepFlag 1
            slaveOnly 0
            priority1 128
            priority2 128
            domainNumber 24
            #utc_offset 37
            clockClass 248
            clockAccuracy 0xFE
            offsetScaledLogVariance 0xFFFF
            free_running 0
            freq_est_interval 1
            dscp_event 0
            dscp_general 0
            dataset_comparison ieee1588
            G.8275.defaultDS.localPriority 128
            #
            # Port Data Set
            #
            logAnnounceInterval -3
            logSyncInterval -4
            logMinDelayReqInterval -4
            logMinPdelayReqInterval -4
            announceReceiptTimeout 3
            syncReceiptTimeout 0
            delayAsymmetry 0
            fault_reset_interval 4
            neighborPropDelayThresh 20000000
            masterOnly 0
            G.8275.portDS.localPriority 128
            #
            # Run time options
            #
            assume_two_step 0
            logging_level 6
            path_trace_enabled 0
            follow_up_info 0
            hybrid_e2e 0
            inhibit_multicast_service 0
            net_sync_monitor 0
            tc_spanning_tree 0
            tx_timestamp_timeout 50
            unicast_listen 0
            unicast_master_table 0
            unicast_req_duration 3600
            use_syslog 1
            verbose 0
            summary_interval 0
            kernel_leap 1
            check_fup_sync 0
            #
            # Servo Options
            #
            pi_proportional_const 0.0
            pi_integral_const 0.0
            pi_proportional_scale 0.0
            pi_proportional_exponent -0.3
            pi_proportional_norm_max 0.7
            pi_integral_scale 0.0
            pi_integral_exponent 0.4
            pi_integral_norm_max 0.3
            step_threshold 0.0
            first_step_threshold 0.00002
            max_frequency 900000000
            clock_servo pi
            sanity_freq_limit 200000000
            ntpshm_segment 0
            #
            # Transport options
            #
            transportSpecific 0x0
            ptp_dst_mac 01:1B:19:00:00:00
            p2p_dst_mac 01:80:C2:00:00:0E
            udp_ttl 1
            udp6_scope 0x0E
            uds_address /var/run/ptp4l
            #
            # Default interface options
            #
            clock_type OC
            network_transport UDPv4
            delay_mechanism E2E
            time_stamping hardware
            tsproc_mode filter
            delay_filter moving_median
            delay_filter_length 10
            egressLatency 0
            ingressLatency 0
            boundary_clock_jbod 0
            #
            # Clock description
            #
            productDescription ;;
            revisionData ;;
            manufacturerIdentity 00:00:00
            userDescription ;
            timeSource 0xA0
          ptp4lOpts: -2 -s --summary_interval -4
    recommend:
      - match:
          - nodeLabel: node-role.kubernetes.io/master
        priority: 4
        profile: slave
1
PTP에 사용되는 인터페이스를 설정합니다.

18.1.9. NTP(Network Time Protocol) 비활성화

시스템을 Precision Time Protocol(PTP)에 대해 구성한 후에는 NTP를 제거하여 시스템 클럭에 영향을 미치지 않도록 해야 합니다.

절차

  • 구성 변경이 필요하지 않습니다. 제공된 설정을 사용합니다.

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: master
      name: disable-chronyd
    spec:
      config:
        systemd:
          units:
            - contents: |
                [Unit]
                Description=NTP client/server
                Documentation=man:chronyd(8) man:chrony.conf(5)
                After=ntpdate.service sntp.service ntpd.service
                Conflicts=ntpd.service systemd-timesyncd.service
                ConditionCapability=CAP_SYS_TIME
                [Service]
                Type=forking
                PIDFile=/run/chrony/chronyd.pid
                EnvironmentFile=-/etc/sysconfig/chronyd
                ExecStart=/usr/sbin/chronyd $OPTIONS
                ExecStartPost=/usr/libexec/chrony-helper update-daemon
                PrivateTmp=yes
                ProtectHome=yes
                ProtectSystem=full
                [Install]
                WantedBy=multi-user.target
              enabled: false
              name: chronyd.service
        ignition:
          version: 2.2.0

18.1.10. SR-IOV(단일 루트 I/O 가상화) 구성

SR-IOV는 일반적으로 fronthaul 및 midhaul 네트워크를 활성화하는 데 사용됩니다.

절차

  • 다음 구성을 사용하여 단일 노드 분산 장치(DU)에서 SRIOV를 구성합니다. 첫 번째 CR(사용자 정의 리소스)이 필요합니다. 다음 CR은 예제입니다.

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovOperatorConfig
    metadata:
      name: default
      namespace: openshift-sriov-network-operator
    spec:
      configDaemonNodeSelector:
        node-role.kubernetes.io/master: ""
      disableDrain: true
      enableInjector: true
      enableOperatorWebhook: true
    ---
    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetwork
    metadata:
      name: sriov-nw-du-mh
      namespace: openshift-sriov-network-operator
    spec:
      networkNamespace: openshift-sriov-network-operator
      resourceName: du_mh
      vlan: 150 1
    ---
    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: sriov-nnp-du-mh
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: vfio-pci 2
      isRdma: false
      nicSelector:
        pfNames:
          - ens7f0 3
      nodeSelector:
        node-role.kubernetes.io/master: ""
      numVfs: 8 4
      priority: 10
      resourceName: du_mh
    ---
    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetwork
    metadata:
      name: sriov-nw-du-fh
      namespace: openshift-sriov-network-operator
    spec:
      networkNamespace: openshift-sriov-network-operator
      resourceName: du_fh
      vlan: 140 5
    ---
    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: sriov-nnp-du-fh
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice 6
      isRdma: true
      nicSelector:
        pfNames:
          - ens5f0 7
      nodeSelector:
        node-role.kubernetes.io/master: ""
      numVfs: 8 8
      priority: 10
      resourceName: du_fh
1
midhaul 네트워크의 VLAN을 지정합니다.
2
필요에 따라 vfio-pci 또는 netdevice 를 선택합니다.
3
중간 네트워크에 연결된 인터페이스를 지정합니다.
4
중간 네트워크의 VF 수를 지정합니다.
5
fronthaul 네트워크의 VLAN입니다.
6
필요에 따라 vfio-pci 또는 netdevice 를 선택합니다.
7
fronthaul 네트워크에 연결된 인터페이스를 지정합니다.
8
fronthaul 네트워크의 VF 수를 지정합니다.

18.1.11. 콘솔 Operator 비활성화

console-operator는 클러스터에 웹 콘솔을 설치하고 유지 관리합니다. 노드가 중앙 집중식으로 관리되면 Operator가 필요하지 않으며 애플리케이션 워크로드를 위한 공간을 만듭니다.

절차

  • 다음 구성 파일을 사용하여 Operator를 비활성화할 수 있습니다. 구성 변경이 필요하지 않습니다. 제공된 설정을 사용합니다.

    apiVersion: operator.openshift.io/v1
    kind: Console
    metadata:
      annotations:
        include.release.openshift.io/ibm-cloud-managed: "false"
        include.release.openshift.io/self-managed-high-availability: "false"
        include.release.openshift.io/single-node-developer: "false"
        release.openshift.io/create-only: "true"
      name: cluster
    spec:
      logLevel: Normal
      managementState: Removed
      operatorLogLevel: Normal