搜索

7.9. 安装后 RHOSP 网络配置

download PDF

您可在安装后在 Red Hat OpenStack Platform(RHOSP)集群中配置 OpenShift Container Platform 的一些方面。

7.9.1. 使用浮动 IP 地址配置应用程序访问

安装 OpenShift Container Platform 后,请配置 Red Hat OpenStack Platform (RHOSP) 以允许应用程序网络流量。

注意

如果您在 install-config.yaml 文件中为 platform.openstack.apiFloatingIPplatform.openstack.ingressFloatingIP 提供了值,或为 inventory.yaml playbook 中的 os_api_fipos_ingress_fip 提供了值,在安装过程中不需要执行此步骤。已设置浮动 IP 地址。

先决条件

  • 必须已安装 OpenShift Container Platform 集群
  • 启用浮动 IP 地址,如 RHOSP 安装文档中的 OpenShift Container Platform 所述。

流程

在安装 OpenShift Container Platform 集群后,将浮动 IP 地址附加到入口端口:

  1. 显示端口:

    $ openstack port show <cluster_name>-<cluster_ID>-ingress-port
  2. 将端口附加到 IP 地址:

    $ openstack floating ip set --port <ingress_port_ID> <apps_FIP>
  3. 在您的 DNS 文件中,为 *apps. 添加一条通配符 A 记录。

    *.apps.<cluster_name>.<base_domain>  IN  A  <apps_FIP>
注意

如果您不控制 DNS 服务器,但希望为非生产用途启用应用程序访问,您可以将这些主机名添加到 /etc/hosts

<apps_FIP> console-openshift-console.apps.<cluster name>.<base domain>
<apps_FIP> integrated-oauth-server-openshift-authentication.apps.<cluster name>.<base domain>
<apps_FIP> oauth-openshift.apps.<cluster name>.<base domain>
<apps_FIP> prometheus-k8s-openshift-monitoring.apps.<cluster name>.<base domain>
<apps_FIP> grafana-openshift-monitoring.apps.<cluster name>.<base domain>
<apps_FIP> <app name>.apps.<cluster name>.<base domain>

7.9.2. Kuryr 端口池

Kuryr 端口池在待机时维护多个端口,用于创建 pod。

将端口保留在待机上可最大程度缩短 pod 创建时间。如果没有端口池,Kuryr 必须明确请求在创建或删除 pod 时创建或删除端口。

Kuryr 使用的 Neutron 端口是在绑定到命名空间的子网中创建的。这些 pod 端口也作为子端口添加到 OpenShift Container Platform 集群节点的主端口。

因为 Kuryr 将每个命名空间保留在单独的子网中,所以为每个命名空间 worker 对维护一个单独的端口池。

在安装集群前,您可以在 cluster-network-03-config.yml 清单文件中设置以下参数来配置端口池行为:

  • enablePortPoolsPrepopulation 参数控制池准备工作,它会强制 Kuryr 在命名空间中创建第一个 pod 使用专用网络时将 Neutron 端口添加到池中。默认值为 false
  • poolMinPorts 参数是池中保留的最少可用端口的数量。默认值为 1
  • poolMaxPorts 参数是池中保留的最大可用端口数。值 0 可 禁用此上限。这是默认设置。

    如果您的 OpenStack 端口配额较低,或者 pod 网络上的 IP 地址有限,请考虑设置此选项以确保删除不需要的端口。

  • poolBatchPorts 参数定义一次可以创建的 Neutron 端口的最大数量。默认值为 3

7.9.3. 在 RHOSP 上的活跃部署中调整 Kuryr 端口池设置

您可以使用自定义资源 (CR) 配置 Kuryr 如何管理 Red Hat OpenStack Platform (RHOSP) Neutron 端口,以控制在部署的集群上创建 pod 的速度和效率。

流程

  1. 在命令行中,打开 Cluster Network Operator (CNO) CR 进行编辑:

    $ oc edit networks.operator.openshift.io cluster
  2. 编辑设置以满足您的要求。以下示例提供了以下文件:

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      clusterNetwork:
      - cidr: 10.128.0.0/14
        hostPrefix: 23
      serviceNetwork:
      - 172.30.0.0/16
      defaultNetwork:
        type: Kuryr
        kuryrConfig:
          enablePortPoolsPrepopulation: false 1
          poolMinPorts: 1 2
          poolBatchPorts: 3 3
          poolMaxPorts: 5 4
    1
    enablePortPoolsPrepopulation 设置为 true,以便在命名空间中创建一个命名空间为 pod 使用专用网络的 pod 时创建 Kuryr 创建 Neutron 端口。此设置引发 Neutron 端口配额,但可以缩短生成容器集所需的时间。默认值为 false
    2
    如果池中的可用端口数量低于 poolMinPorts 的值,Kuryr 会为池创建新端口。默认值为 1
    3
    poolBatchPorts 控制在可用端口数量低于 poolMinPorts 值时创建的新端口数量。默认值为 3
    4
    如果池中的可用端口数量大于 poolMaxPorts 的值,Kuryr 会删除它们,直到数量与这个值匹配为止。将值设为 0 可禁用此上限,防止池被缩小。默认值为 0
  3. 保存您的更改,再退出文本编辑器以提交更改。
重要

在正在运行的集群中修改这些选项会强制 kuryr-controller 和 kuryr-cni pod 重启。因此,创建新 pod 和服务会延迟。

7.9.4. 启用 OVS 硬件卸载

重要

OVS 硬件卸载只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

对于在 Red Hat OpenStack Platform(RHOSP)上运行的集群,您可以启用 Open vSwitch(OVS) 硬件卸载。

OVS 是一种多层虚拟交换机,能够启用大规模多服务器网络虚拟化。

先决条件

  • 您在为单根输入/输出虚拟化(SR-IOV)配置的 RHOSP 上安装集群。
  • 在集群中安装了 SR-IOV Network Operator。
  • 您在集群中创建了两个 hw-offload 类型虚拟功能(VF)接口。

流程

  1. 在命令行中输入以下命令禁用准入 Webhook:

    $ oc patch sriovoperatorconfig default --type=merge -n openshift-sriov-network-operator --patch '{ "spec": { "enableOperatorWebhook": false } }'
  2. 为集群中的两个 hw-offload 类型 VF 接口创建一个 SriovNetworkNodePolicy 策略:

    第一个虚拟功能接口

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy 1
    metadata:
      name: "hwoffload9"
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice
      isRdma: true
      nicSelector:
        pfNames: 2
        - ens6
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: 'true'
      numVfs: 1
      priority: 99
      resourceName: "hwoffload9"

    1
    在此处插入 SriovNetworkNodePolicy 值。
    2
    两个接口都必须包含物理功能(PF)名称。

    第二个虚拟功能接口

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy 1
    metadata:
      name: "hwoffload10"
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice
      isRdma: true
      nicSelector:
        pfNames: 2
        - ens5
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: 'true'
      numVfs: 1
      priority: 99
      resourceName: "hwoffload10"

    1
    在此处插入 SriovNetworkNodePolicy 值。
    2
    两个接口都必须包含物理功能(PF)名称。
  3. 为两个接口创建 NetworkAttachmentDefinition 资源:

    第一接口的 NetworkAttachmentDefinition 资源

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      annotations:
        k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload9
      name: hwoffload9
      namespace: default
    spec:
        config: '{ "cniVersion":"0.3.1", "name":"hwoffload9","type":"host-device","device":"ens6"
        }'

    第二个接口的 NetworkAttachmentDefinition 资源

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      annotations:
        k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload10
      name: hwoffload10
      namespace: default
    spec:
        config: '{ "cniVersion":"0.3.1", "name":"hwoffload10","type":"host-device","device":"ens5"
        }'

  4. 使用通过 pod 创建的接口。例如:

    使用两个 OVS 卸载接口的 Pod

    apiVersion: v1
    kind: Pod
    metadata:
      name: dpdk-testpmd
      namespace: default
      annotations:
        irq-load-balancing.crio.io: disable
        cpu-quota.crio.io: disable
        k8s.v1.cni.cncf.io/networks: '[
          {
           "name": "hwoffload9",
           "namespace": "default"
          },
          {
           "name": "hwoffload10",
           "namespace": "default"
          }
        ]'
    spec:
      restartPolicy: Never
      containers:
      - name: dpdk-testpmd
        image: quay.io/krister/centos8_nfv-container-dpdk-testpmd:latest

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.