19.6. 安装 OpenStack 后配置网络设置


在安装后,您可以在 Red Hat OpenStack Platform (RHOSP) 集群中为 OpenShift Container Platform 配置网络设置。

19.6.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> <app name>.apps.<cluster name>.<base domain>

19.6.2. 启用 OVS 硬件卸载

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

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

先决条件

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

应用程序层网关流在 OpenShift Container Platform 版本 4.10、4.11 和 4.12 中无法正常工作。另外,您无法卸载 OpenShift Container Platform 版本 4.13 的应用程序层网关流。

流程

  1. 为集群中的两个 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)名称。
  2. 为两个接口创建 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"
        }'

  3. 使用通过 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/resourceName: openshift.io/hwoffload9
        k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload10
    spec:
      restartPolicy: Never
      containers:
      - name: dpdk-testpmd
        image: quay.io/krister/centos8_nfv-container-dpdk-testpmd:latest

19.6.3. 附加 OVS 硬件卸载网络

您可以将 Open vSwitch (OVS) 硬件卸载网络添加到集群中。

先决条件

  • 集群已安装并运行。
  • 您已在 Red Hat OpenStack Platform (RHOSP) 上置备了 OVS 硬件卸载网络,用于您的集群。

流程

  1. 从以下模板创建一个名为 network.yaml 的文件:

    spec:
      additionalNetworks:
      - name: hwoffload1
        namespace: cnf
        rawCNIConfig: '{ "cniVersion": "0.3.1", "name": "hwoffload1", "type": "host-device","pciBusId": "0000:00:05.0", "ipam": {}}' 1
        type: Raw

    其中:

    pciBusId

    指定连接到卸载网络的设备。如果没有它,您可以运行以下命令来查找这个值:

    $ oc describe SriovNetworkNodeState -n openshift-sriov-network-operator
  2. 在命令行中输入以下命令使用该文件来修补集群:

    $ oc apply -f network.yaml

19.6.4. 启用与 RHOSP 上的 pod 的 IPv6 连接

要在具有不同节点上的额外网络的 pod 之间启用 IPv6 连接,请禁用服务器的 IPv6 端口的端口安全性。禁用端口安全性,从而需要为每个分配给 pod 的 IPv6 地址创建允许的地址对,并启用安全组上的流量。

重要

仅支持以下 IPv6 额外网络配置:

  • SLAAC 和 host-device
  • SLAAC 和 MACVLAN
  • DHCP stateless 和 host-device
  • DHCP stateless 和 MACVLAN

流程

  • 在命令行中输入以下命令:

    $ openstack port set --no-security-group --disable-port-security <compute_ipv6_port> 1
    1 1
    指定计算服务器的 IPv6 端口。
    重要

    这个命令从端口中删除安全组,并禁用端口安全性。流量限制完全从端口中删除。

19.6.5. 在 RHOSP 上创建具有 IPv6 连接的 pod

为 pod 启用 IPv6 连接后,将其添加到其中,创建具有辅助 IPv6 连接的 pod。

流程

  1. 定义使用 IPv6 命名空间和注解 k8s.v1.cni.cncf.io/networks: <additional_network_name> 的 pod,其中 <additional_network_name 是额外网络的名称。例如,作为 Deployment 对象的一部分:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-openshift
      namespace: ipv6
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
             - labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - hello-openshift
      replicas: 2
      selector:
        matchLabels:
          app: hello-openshift
      template:
        metadata:
          labels:
            app: hello-openshift
          annotations:
            k8s.v1.cni.cncf.io/networks: ipv6
        spec:
          securityContext:
            runAsNonRoot: true
            seccompProfile:
              type: RuntimeDefault
          containers:
          - name: hello-openshift
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop:
                - ALL
            image: quay.io/openshift/origin-hello-openshift
            ports:
            - containerPort: 8080
  2. 创建 pod。例如,在命令行中输入以下命令:

    $ oc create -f <ipv6_enabled_resource> 1
    1
    指定包含资源定义的文件。

19.6.6. 为 RHOSP 上的 pod 添加 IPv6 连接

在 pod 中启用 IPv6 连接后,使用 Container Network Interface (CNI) 配置添加与它们的连接。

流程

  1. 要编辑 Cluster Network Operator (CNO),请输入以下命令:

    $ oc edit networks.operator.openshift.io cluster
  2. spec 字段中指定您的 CNI 配置。例如,以下配置使用带有 MACVLAN 的 192.168.1.0/24 地址模式:

    ...
    spec:
      additionalNetworks:
      - name: ipv6
        namespace: ipv6 1
        rawCNIConfig: '{ "cniVersion": "0.3.1", "name": "ipv6", "type": "macvlan", "master": "ens4"}' 2
        type: Raw
    1
    确保在同一命名空间中创建 pod。
    2
    当配置了更多网络或使用不同的内核驱动程序时,网络附加 "master" 字段中的接口可能与 "ens4" 不同。
    注意

    如果您使用有状态地址模式,请在 CNI 配置中包含 IP 地址管理 (IPAM)。

    Multus 不支持 DHCPv6。

  3. 保存您的更改,再退出文本编辑器以提交更改。

验证

  • 在命令行中输入以下命令:

    $ oc get network-attachment-definitions -A

    输出示例

    NAMESPACE       NAME            AGE
    ipv6            ipv6            21h

现在,您可以创建具有辅助 IPv6 连接的 pod。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.