$ openstack port show <cluster_name>-<cluster_ID>-ingress-port
安装后,您可以为 Red Hat OpenStack Platform (RHOSP) 集群上的 OpenShift Container Platform 配置网络设置。
安装 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 地址附加到入口端口
显示端口
$ openstack port show <cluster_name>-<cluster_ID>-ingress-port
将端口附加到 IP 地址
$ openstack floating ip set --port <ingress_port_ID> <apps_FIP>
为 `*apps.` 添加通配符 `A` 记录到您的 DNS 文件
*.apps.<cluster_name>.<base_domain> IN A <apps_FIP>
如果您不控制 DNS 服务器但想为非生产用途启用应用程序访问,您可以将这些主机名添加到 `/etc/hosts`
|
对于在 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 卸载应用程序层网关流。 |
为集群上的两个 `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) 名称。 |
为这两个接口创建 `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"
}'
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 一起使用。例如
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
您可以将 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
要启用在不同节点上具有附加网络的 Pod 之间的 IPv6 连接,请为服务器的 IPv6 端口禁用端口安全。禁用端口安全无需为分配给 Pod 的每个 IPv6 地址创建允许的地址对,并启用安全组上的流量。
仅支持以下 IPv6 附加网络配置
|
在命令行上,输入以下命令
$ openstack port set --no-security-group --disable-port-security <compute_ipv6_port> (1)
1 | 指定计算服务器的 IPv6 端口。 |
此命令从端口中删除安全组并禁用端口安全。流量限制将完全从端口中删除。 |
启用 Pod 的 IPv6 连接并将其添加到 Pod 后,创建具有辅助 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 | 指定包含您的资源定义的文件。 |
启用 Pod 的 IPv6 连接后,请使用容器网络接口 (CNI) 配置为其添加连接。
要编辑集群网络操作员 (CNO),请输入以下命令:
$ oc edit networks.operator.openshift.io cluster
在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。 |
保存更改并退出文本编辑器以提交更改。
在命令行上,输入以下命令
$ oc get network-attachment-definitions -A
NAMESPACE NAME AGE
ipv6 ipv6 21h
您现在可以创建具有辅助 IPv6 连接的 Pod 了。