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: 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"
第二个虚拟功能接口
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"
为两个接口创建
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: ipv6 1 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。