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.apiFloatingIP 和 platform.openstack.ingressFloatingIP 提供了值,或为 inventory.yaml playbook 中的 os_api_fip 和 os_ingress_fip 提供了值,在安装过程中不需要执行此步骤。已设置浮动 IP 地址。
先决条件
- 必须已安装 OpenShift Container Platform 集群
- 启用浮动 IP 地址,如 RHOSP 安装文档中的 OpenShift Container Platform 所述。
流程
在安装 OpenShift Container Platform 集群后,将浮动 IP 地址附加到入口端口:
显示端口:
$ openstack port show <cluster_name>-<cluster_ID>-ingress-port将端口附加到 IP 地址:
$ openstack floating ip set --port <ingress_port_ID> <apps_FIP>在您的 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 的应用程序层网关流。
流程
为集群中的两个
hw-offload类型 VF 接口创建一个SriovNetworkNodePolicy策略:第一个虚拟功能接口
apiVersion: sriovnetwork.openshift.io/v1 kind: SriovNetworkNodePolicy1 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"第二个虚拟功能接口
apiVersion: sriovnetwork.openshift.io/v1 kind: SriovNetworkNodePolicy1 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"为两个接口创建
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" }'使用通过 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 硬件卸载网络,用于您的集群。
流程
从以下模板创建一个名为
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
在命令行中输入以下命令使用该文件来修补集群:
$ 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
19.6.5. 在 RHOSP 上创建具有 IPv6 连接的 pod 复制链接链接已复制到粘贴板!
为 pod 启用 IPv6 连接后,将其添加到其中,创建具有辅助 IPv6 连接的 pod。
流程
定义使用 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创建 pod。例如,在命令行中输入以下命令:
$ oc create -f <ipv6_enabled_resource>1 - 1
- 指定包含资源定义的文件。
19.6.6. 为 RHOSP 上的 pod 添加 IPv6 连接 复制链接链接已复制到粘贴板!
在 pod 中启用 IPv6 连接后,使用 Container Network Interface (CNI) 配置添加与它们的连接。
流程
要编辑 Cluster Network Operator (CNO),请输入以下命令:
$ oc edit networks.operator.openshift.io cluster在
spec字段中指定您的 CNI 配置。例如,以下配置使用带有 MACVLAN 的 192.168.1.0/24 地址模式:... spec: additionalNetworks: - name: ipv6 namespace: ipv61 rawCNIConfig: '{ "cniVersion": "0.3.1", "name": "ipv6", "type": "macvlan", "master": "ens4"}'2 type: Raw注意如果您使用有状态地址模式,请在 CNI 配置中包含 IP 地址管理 (IPAM)。
Multus 不支持 DHCPv6。
- 保存您的更改,再退出文本编辑器以提交更改。
验证
在命令行中输入以下命令:
$ oc get network-attachment-definitions -A输出示例
NAMESPACE NAME AGE ipv6 ipv6 21h
现在,您可以创建具有辅助 IPv6 连接的 pod。