×

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

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

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

如果您在安装期间在 `install-config.yaml` 文件中或 `inventory.yaml` playbook 中提供了 `platform.openstack.apiFloatingIP` 和 `platform.openstack.ingressFloatingIP` 或 `os_api_fip` 和 `os_ingress_fip` 的值,则无需执行此过程。浮动 IP 地址已设置。

先决条件
  • 必须安装 OpenShift Container Platform 集群

  • 浮动 IP 地址已启用,如 Red Hat OpenStack Platform 上 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. 为 `*apps.` 添加通配符 `A` 记录到您的 DNS 文件

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

启用 OVS 硬件卸载

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

OVS 是一个多层虚拟交换机,支持大规模多服务器网络虚拟化。

先决条件
  • 您在配置为单根输入/输出虚拟化 (SR-IOV) 的 RHOSP 上安装了一个集群。

  • 您已在集群上安装了 SR-IOV 网络操作员。

  • 您在集群上创建了两个 `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

附加 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

启用 IPv6 连接到 RHOSP 上的 Pod

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

仅支持以下 IPv6 附加网络配置

  • SLAAC 和主机设备

  • SLAAC 和 MACVLAN

  • 无状态 DHCP 和主机设备

  • 无状态 DHCP 和 MACVLAN

步骤
  • 在命令行上,输入以下命令

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

    此命令从端口中删除安全组并禁用端口安全。流量限制将完全从端口中删除。

创建在 RHOSP 上具有 IPv6 连接的 Pod

启用 Pod 的 IPv6 连接并将其添加到 Pod 后,创建具有辅助 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 指定包含您的资源定义的文件。

在 RHOSP 上为 Pod 添加 IPv6 连接

启用 Pod 的 IPv6 连接后,请使用容器网络接口 (CNI) 配置为其添加连接。

步骤
  1. 要编辑集群网络操作员 (CNO),请输入以下命令:

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

    ...
    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 了。