第 17 章 在单节点 OpenShift 中手动部署分布式单元

本主题中的步骤告诉您如何在安装过程中作为分布式单元(DU)在少量单一节点上手动部署集群。

该流程没有描述如何安装单节点 OpenShift。这可以通过许多机制来完成。相反,它们旨在捕获应配置为安装过程一部分的元素:

  • 安装完成后,需要启用与单节点 OpenShift DU 的连接。
  • 工作负载分区,它只能在安装过程中配置。
  • 有助于在安装后减少潜在的重启的其他项目。

17.1. 配置分布式单元(DU)

本节介绍了 OpenShift Container Platform 集群的一组配置,使其满足运行分布式单元(DU)应用程序所需的功能和性能要求。其中一些内容必须在安装过程中应用,并可在安装后应用其他配置。

安装单节点 OpenShift DU 后,需要进一步配置来启用平台所需的 DU 工作负载。

本节中的配置会在安装后应用到集群,以便为 DU 工作负载配置集群。

17.1.1. 启用工作负载分区

作为单一节点 OpenShift 安装的一部分启用的一个关键功能是工作负载分区。这限制了运行平台服务的内核数,从而最大程度提高应用程序有效负载的 CPU 内核。您必须在集群安装过程中配置工作负载分区。

注意

您只能在集群安装过程中启用工作负载分区。您不能在安装后禁用工作负载分区。但是,您可以通过更新您在性能配置集中定义的 cpu 值以及 MachineConfig 自定义资源 (CR) 中的相关 cpuset 值来重新配置工作负载分区。

流程

  • 以下 base64 编码的内容包含管理工作负载受限的 CPU 集。必须调整此内容,以匹配 性能配置集 中指定的设置,且对于集群中的内核数必须准确。

    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,W2NyaW8ucnVudGltZS53b3JrbG9hZHMubWFuYWdlbWVudF0KYWN0aXZhdGlvbl9hbm5vdGF0aW9uID0gInRhcmdldC53b3JrbG9hZC5vcGVuc2hpZnQuaW8vbWFuYWdlbWVudCIKYW5ub3RhdGlvbl9wcmVmaXggPSAicmVzb3VyY2VzLndvcmtsb2FkLm9wZW5zaGlmdC5pbyIKW2NyaW8ucnVudGltZS53b3JrbG9hZHMubWFuYWdlbWVudC5yZXNvdXJjZXNdCmNwdXNoYXJlcyA9IDAKQ1BVcyA9ICIwLTEsIDUyLTUzIgo=
            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"
    [crio.runtime.workloads.management.resources]
    cpushares = 0
    cpuset = "0-1, 52-53" 1
    1
    cpuset 值因安装而异。

    如果启用了超线程,请为每个内核指定两个线程。cpuset 值必须与您在性能配置集中的 spec.cpu.reserved 字段中定义的保留 CPU 匹配。

如果启用了超线程,请指定每个内核的两个线程。CPU 值必须与性能配置集中指定的保留 CPU 设置匹配。

此内容应采用 base64 编码,并在上述清单中的 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 中的 cpuset 值匹配。

17.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

17.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

17.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

17.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
    指定 ManualAutomatic。在 Automatic 模式中,Operator 会在 registry 中可用时自动更新到频道中最新版本。在 Manual 模式中,只有在被明确批准后,才会安装新的 Operator 版本。
    3
    指定用于获取 local-storage-operator Operator 的频道。
    4
    指定频道以获取 performance-addon-operator Operator。
    5
    指定频道以获取 ptp-operator Operator。
    6
    指定用于获取 sriov-network-operator Operator 的频道。

17.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 服务器的目的地。

17.1.7. 配置 Performance Addon Operator

这是单一节点分布式单元(DU)的一个关键配置。此处配置了很多实时功能和服务保证。

流程

  • 使用以下示例配置性能附加组件:

    推荐的性能配置集配置

    apiVersion: performance.openshift.io/v2
    kind: PerformanceProfile
    metadata:
      name: openshift-node-performance-profile 1
    spec:
      additionalKernelArgs:
        - "idle=poll"
        - "rcupdate.rcu_normal_after_boot=0"
      cpu:
        isolated: 2-51,54-103 2
        reserved: 0-1,52-53   3
      hugepages:
        defaultHugepagesSize: 1G
        pages:
          - count: 32 4
            size: 1G  5
            node: 0 6
      machineConfigPoolSelector:
        pools.operator.machineconfiguration.openshift.io/master: ""
      net:
        userLevelNetworking: true 7
      nodeSelector:
        node-role.kubernetes.io/master: ''
      numa:
        topologyPolicy: "restricted"
      realTimeKernel:
        enabled: true    8

    1
    确保 name 的值与 Tuned PerformancePatch.yamlspec.profile.data 字段中指定的值和 validatorCR/informDuValidator.yamlstatus.configuration.source.name 字段匹配。
    2
    设置隔离的 CPU。确保所有 Hyper-Threading 对都匹配。
    3
    设置保留的 CPU。启用工作负载分区时,系统进程、内核线程和系统容器线程仅限于这些 CPU。所有不是隔离的 CPU 都应保留。
    4
    设置巨页数量。
    5
    设置巨页大小。
    6
    node 设置为分配了 hugepages 的 NUMA 节点。
    7
    userLevelNetworking 设置为 true,以将 CPU 与网络中断隔离。
    8
    enabled 设置为 true 以安装实时 Linux 内核。

17.1.8. 配置精确时间协议(PTP)

在边缘中,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 2.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 的接口。

17.1.9. 禁用网络时间协议(NTP)

为 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

17.1.10. 配置单一根 I/O 虚拟化(SR-IOV)

SR-IOV 通常用于启用前端和中间网络。

流程

  • 使用以下配置在单个节点分布式单元(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-pcinetdevice
3
指定连接到中间网络的接口。
4
指定 midhaul 网络的 VF 数量。
5
前端网络的 VLAN。
6
根据需要选择 vfio-pcinetdevice
7
指定连接到前端网络的接口。
8
指定前端网络的 VF 数量。

17.1.11. 禁用 console Operator

console-operator 在集群中安装并维护 web 控制台。当节点被集中管理时,不需要 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