MicroShift is Technology Preview software only.
For more information about the support scope of Red Hat Technology Preview software, see Technology Preview Support Scope.网络
配置和管理集群网络
摘要
第 1 章 了解网络设置 复制链接链接已复制到粘贴板!
了解如何将网络自定义和默认设置应用到红帽构建的 MicroShift 部署。每个节点都包含在一个机器和单个红帽构建的 MicroShift 中,因此每个部署都需要单独的配置、Pod 和设置。
集群管理员有几个选项用于公开集群内的应用程序到外部流量并确保网络连接:
- 服务,如 NodePort
-
API 资源,如
Ingress和Route
默认情况下,Kubernetes 为 pod 内运行的应用分配内部 IP 地址。Pod 及其容器之间可以有网络流量,但集群外的客户端无法直接访问容器集,除非通过一个服务(如 NodePort)公开。
要排除 NodePort 服务的连接问题,请阅读发行注记中的已知问题。
1.1. 关于 OVN-Kubernetes 网络插件 复制链接链接已复制到粘贴板!
OVN-Kubernetes 是红帽构建的 MicroShift 部署的默认网络解决方案。OVN-Kubernetes 是 pod 和基于 Open Virtual Network (OVN) 的服务的虚拟网络。OVN-Kubernetes Container Network Interface (CNI) 插件是集群的网络插件。使用 OVN-Kubernetes 网络插件的集群也会在节点上运行 Open vSwitch (OVS)。OVN 在节点上配置 OVS,以实施声明的网络配置。
1.1.1. 网络拓扑 复制链接链接已复制到粘贴板!
OVN-Kubernetes 提供基于 overlay 的网络实现。此覆盖包括基于 OVS 的服务和 NetworkPolicy 实施。覆盖网络使用 Geneve (Generic Network Virtualization Encapsulation) 隧道协议。Geneve 隧道的 pod 最大传输单元(MTU)被设置为比主机上的物理接口 MTU 小的值。这个较小的 MTU 为传输前添加到隧道头所需的信息留出空间。
OVS 作为 systemd 服务在 MicroShift 节点的红帽构建上运行。OVS RPM 软件包作为对 microshift-networking RPM 软件包的依赖项安装。安装了 microshift-networking RPM 时,OVS 会立即启动。
红帽构建的 MicroShift 网络拓扑
1.1.1.1. 虚拟化网络的 OVN 逻辑组件描述 复制链接链接已复制到粘贴板!
- OVN 节点交换机
一个名为
<node-name>的虚拟交换机。OVN 节点交换机根据节点的主机名命名。-
在本例中,
node-name是microshift-dev。
-
在本例中,
- OVN 集群路由器
名为
ovn_cluster_router的虚拟路由器,也称为分布式路由器。-
在本例中,集群网络是
10.42.0.0/16。
-
在本例中,集群网络是
- OVN join 开关
-
名为
join的虚拟交换机。 - OVN 网关路由器
-
名为
GR_<node-name>的虚拟路由器,也称为外部网关路由器。 - OVN 外部交换机
-
名为
ext_<node-name>.的虚拟交换机。
1.1.1.2. 网络拓扑图中的连接描述 复制链接链接已复制到粘贴板!
-
网络服务设备
enp1s0和 OVN 外部交换机ext_microshift-dev之间的南北流量由网关网桥br-ex通过 OVS 跳接端口提供。 -
OVN 网关路由器
GR_microshift-dev通过逻辑路由器端口 4 连接到外部网络交换机ext_microshift-dev。端口 4 附加到节点 IP 地址 192.168.122.14。 join 交换机
join将 OVN 网关路由器GR_microshift-dev连接到 OVN 集群路由器ovn_cluster_router。IP 地址范围为 100.62.0.0/16。-
OVN 网关路由器
GR_microshift-dev通过逻辑路由器端口 3 连接到 OVNjoin交换机。端口 3 与内部 IP 地址 100.64.0.2 连接。 -
OVN 集群路由器
ovn_cluster_router通过逻辑路由器端口 2 连接到join交换机。端口 2 与内部 IP 地址 100.64.0.1 连接。
-
OVN 网关路由器
-
OVN 集群路由器
ovn_cluster_router通过逻辑路由器端口 1 连接到节点交换机microshift-dev。端口 1 与 OVN 集群网络 IP 地址 10.42.0.1 附加。 -
pod 和网络服务之间的东西流量由 OVN 集群路由器
ovn_cluster_router和节点交换机microshift-dev提供。IP 地址范围为 10.42.0.0/24。 -
pod 之间的东西流量由节点交换机
microshift-dev提供,而无需网络地址转换 (NAT)。 -
pod 和外部网络之间的南北流量由 OVN 集群路由器
ovn_cluster_router和主机网络提供。此路由器通过ovn-kubernetes管理端口ovn-k8s-mp0连接,IP 地址为 10.42.0.2。 所有 pod 都通过其接口连接到 OVN 节点交换机。
-
在本例中,Pod 1 和 Pod 2 通过
Interface 1和Interface 2连接到节点交换机。
-
在本例中,Pod 1 和 Pod 2 通过
1.1.2. IP 转发 复制链接链接已复制到粘贴板!
启动时,ovnkube-master 容器会自动启用主机网络 sysctl net.ipv4.ip_forward 内核参数。这需要将传入的流量转发到 CNI。例如,如果禁用了 ip_forward,则从集群外部访问 NodePort 服务会失败。
1.1.3. 网络性能优化 复制链接链接已复制到粘贴板!
默认情况下,将三个性能优化应用到 OVS 服务,以最大程度降低资源消耗:
-
ovs-vswitchd.service和ovsdb-server.service的 CPU 关联性 -
no-mlockall到openvswitch.service -
将处理程序和
revalidator线程限制为ovs-vswitchd.service
1.1.4. 网络功能 复制链接链接已复制到粘贴板!
红帽构建的 MicroShift 4.13提供的网络功能包括:
- Kubernetes 网络策略
- 动态节点 IP
- 指定主机接口上的集群网络
红帽构建的 MicroShift 4.13 不提供网络功能:
- egress IP/firewall/qos: 禁用
- 混合网络:不支持
- IPsec: 不支持
- 硬件卸载:不支持
1.1.5. 红帽构建的 MicroShift 网络组件和服务 复制链接链接已复制到粘贴板!
本简要概述在红帽构建的 MicroShift 中描述了网络组件及其操作。microshift-networking RPM 是一个软件包,可自动拉取任何与网络相关的依赖项和 systemd 服务来初始化网络,例如 microshift-ovs-init systemd 服务。
- NetworkManager
-
NetworkManager 需要在红帽构建的 MicroShift 节点上设置初始网关网桥。NetworkManager 和
NetworkManager-ovsRPM 软件包作为依赖项安装到microshift-networkingRPM 软件包,该软件包包含必要的配置文件。红帽构建的 MicroShift 中的 NetworkManager 使用keyfile插件,并在安装microshift-networkingRPM 软件包后重启。 - microshift-ovs-init
-
microshift-ovs-init.service由microshift-networkingRPM 软件包安装,作为依赖的 systemd 服务到 microshift.service。它负责设置 OVS 网关网桥。 - OVN 容器
两个 OVN-Kubernetes 守护进程集由红帽构建的 MicroShift 渲染和应用。
-
ovnkube-master 包含
northd,nbdb,sbdb和ovnkube-master容器。 ovnkube-node ovnkube-node 包含 OVN-Controller 容器。
在红帽构建的 MicroShift 引导后,OVN-Kubernetes 守护进程集会在
openshift-ovn-kubernetes命名空间中部署。
-
ovnkube-master 包含
- 打包
OVN-Kubernetes 清单和启动逻辑内置在红帽构建的 MicroShift 中。
microshift-networkingRPM 中包含的 systemd 服务和配置包括:-
/etc/NetworkManager/conf.d/microshift-nm.conffor NetworkManager.service -
/etc/systemd/system/ovs-vswitchd.service.d/microshift-cpuaffinity.conffor ovs-vswitchd.service -
/etc/systemd/system/ovsdb-server.service.d/microshift-cpuaffinity.conf -
/usr/bin/configure-ovs-microshift.sh用于 microshift-ovs-init.service -
/usr/bin/configure-ovs.sh用于 microshift-ovs-init.service -
/etc/crio/crio.conf.d/microshift-ovn.conf用于 CRI-O 服务
-
1.1.6. 网桥映射 复制链接链接已复制到粘贴板!
网桥映射允许提供商网络流量访问物理网络。流量离开提供商网络,到达 br-int 网桥。br-int 和 br-ex 之间的跳接端口允许流量遍历提供商网络和边缘网络。Kubernetes pod 通过虚拟以太网对连接到 br-int 网桥:一个虚拟以太网对端附加到 pod 命名空间,另一个端点连接到 br-int 网桥。
1.1.6.1. 主网关接口 复制链接链接已复制到粘贴板!
您可以在 ovn.yaml 配置文件中将所需的主机接口名称指定为 gatewayInterface。指定的接口在 OVS 网桥 br-ex 中添加,它充当 CNI 网络的网关桥接。
1.2. 创建 OVN-Kubernetes 配置文件 复制链接链接已复制到粘贴板!
如果没有创建 OVN-Kubernetes 配置文件,红帽构建的 MicroShift 将使用内置默认 OVN-Kubernetes 值。您可以将 OVN-Kubernetes 配置文件写入 /etc/microshift/ovn.yaml。为您的配置提供了一个示例文件。
流程
要创建
ovn.yaml文件,请运行以下命令:$ sudo cp /etc/microshift/ovn.yaml.default /etc/microshift/ovn.yaml
$ sudo cp /etc/microshift/ovn.yaml.default /etc/microshift/ovn.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要列出您创建的配置文件的内容,请运行以下命令:
$ cat /etc/microshift/ovn.yaml.default
$ cat /etc/microshift/ovn.yaml.defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 带有默认值的 'yaml' 配置文件示例
ovsInit: disableOVSInit: false gatewayInterface: "" mtu: 1400
ovsInit: disableOVSInit: false gatewayInterface: ""1 mtu: 1400Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 默认值为空字符串,表示 "not-specified"。CNI 网络插件会自动探测到带有默认路由的接口。
要自定义配置,请使用列出您可以使用的有效值:
Expand 表 1.1. 支持红帽构建的 MicroShift 的可选 OVN-Kubernetes 配置 字段 类型 Default(默认) 描述 示例 ovsInit.disableOVSInitbool
false
跳过在
microshift-ovs-init.service中配置 OVS 网桥br-extrue [1]
ovsInit.gatewayInterfaceAlpha
eth0
Ingress,即 API 网关
eth0
mtu
uint32
auto
用于 pod 的 MTU 值
1300
需要 OVS 网桥。当
disableOVSInit为 true 时,必须手动配置 OVS 网桥br-ex。重要如果更改了
ovn.yaml文件中的mtu配置值,您必须重启红帽构建的 MicroShift 运行的主机以应用更新的设置。
自定义 ovn.yaml 配置文件示例
ovsInit: disableOVSInit: true gatewayInterface: eth0 mtu: 1300
ovsInit:
disableOVSInit: true
gatewayInterface: eth0
mtu: 1300
当在 ovn.yaml 配置文件中将 disableOVSInit 设置为 true 时,必须手动配置 br-ex OVS 网桥。
1.3. 重启 ovnkube-master pod 复制链接链接已复制到粘贴板!
以下流程重启 ovnkube-master pod。
先决条件
-
已安装 OpenShift CLI (
oc)。 -
使用具有
cluster-admin角色的用户访问集群。 - 在使用 OVN-Kubernetes 网络插件配置的基础架构上安装集群。
- KUBECONFIG 环境变量被设置。
流程
使用以下步骤重启 ovnkube-master pod。
运行以下命令来访问远程集群:
export KUBECONFIG=$PWD/kubeconfig
$ export KUBECONFIG=$PWD/kubeconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,查找您要重启的
ovnkube-masterpod 的名称:pod=$(oc get pods -n openshift-ovn-kubernetes | awk -F " " '/ovnkube-master/{print $1}')$ pod=$(oc get pods -n openshift-ovn-kubernetes | awk -F " " '/ovnkube-master/{print $1}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除
ovnkube-masterpod:oc -n openshift-ovn-kubernetes delete pod $pod
$ oc -n openshift-ovn-kubernetes delete pod $podCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令确认新的
ovnkube-masterpod 正在运行:oc get pods -n openshift-ovn-kubernetes
$ oc get pods -n openshift-ovn-kubernetesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 正在运行的 Pod 列表显示新的
ovnkube-masterpod 名称和年龄。
1.4. 在 HTTP (S) 代理后部署红帽构建的 MicroShift 复制链接链接已复制到粘贴板!
当您想要向 pod 添加基本匿名和安全措施时,请在 HTTP(S)代理后面部署一个红帽构建的 MicroShift 集群。
在代理后面部署红帽构建的 MicroShift 时,您必须将主机操作系统配置为使用代理与启动 HTTP(S) 请求的所有组件。
所有特定于用户的工作负载或带有出口流量的 pod (如访问云服务)都必须配置为使用代理。红帽构建的 MicroShift 中没有内置透明代理的出口流量。
1.5. 使用 RPM-OStree HTTP (S) 代理 复制链接链接已复制到粘贴板!
要在 RPM-OStree 中使用 HTTP (S)代理,请为 rpm-ostreed 服务设置 http_proxy 环境变量。
流程
运行以下命令,将此设置添加到
/etc/systemd/system/rpm-ostreed.service.d/00-proxy.conf文件中:Environment="http_proxy=http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/"
Environment="http_proxy=http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 接下来,重新加载配置设置并重新启动服务以应用您的更改。
运行以下命令来重新载入配置设置:
sudo systemctl daemon-reload
$ sudo systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令重启 rpm-ostree 服务:
sudo systemctl restart rpm-ostreed.service
$ sudo systemctl restart rpm-ostreed.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6. 在 CRI-O 容器运行时中使用代理 复制链接链接已复制到粘贴板!
要在 CRI-O 中使用 HTTP(S) 代理,您需要设置 HTTP_PROXY 和 HTTPS_PROXY 环境变量。您还可以设置 NO_PROXY 变量,将主机列表排除在代理之外。
流程
在
/etc/systemd/system/crio.service.d/00-proxy.conf文件中添加以下设置:Environment=NO_PROXY="localhost,127.0.0.1" Environment=HTTP_PROXY="http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/" Environment=HTTPS_PROXY="http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/"
Environment=NO_PROXY="localhost,127.0.0.1" Environment=HTTP_PROXY="http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/" Environment=HTTPS_PROXY="http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入配置设置:
sudo systemctl daemon-reload
$ sudo systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 CRI-O 服务以应用设置:
sudo systemctl restart crio
$ sudo systemctl restart crioCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. 从正在运行的集群获取 OVS 接口的快照 复制链接链接已复制到粘贴板!
快照代表 OVS 接口在特定时间点的状态和数据。
流程
- 要查看正在运行的红帽构建的 MicroShift 集群的 OVS 接口快照,请使用以下命令:
sudo ovs-vsctl show
$ sudo ovs-vsctl show
正在运行的集群中的 OVS 接口示例
1.8. 为工作负载部署负载均衡器 复制链接链接已复制到粘贴板!
红帽构建的 MicroShift 提供了网络负载均衡器的内置实现。以下示例使用节点 IP 地址作为 LoadBalancer 服务配置文件的外部 IP 地址。
先决条件
-
已安装 OpenShift CLI (
oc)。 - 您可以使用具有集群管理角色的用户访问集群。
- 在使用 OVN-Kubernetes 网络插件配置的基础架构上安装集群。
-
KUBECONFIG环境变量被设置。
流程
运行以下命令验证您的 pod 是否正在运行:
oc get pods -A
$ oc get pods -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建示例命名空间:
NAMESPACE=nginx-lb-test
$ NAMESPACE=nginx-lb-testCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc create ns $NAMESPACE
$ oc create ns $NAMESPACECopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例在命名空间中部署测试
nginx应用程序的三个副本:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来验证三个副本是否已成功启动:
oc get pods -n $NAMESPACE
$ oc get pods -n $NAMESPACECopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下示例命令为
nginx测试应用程序创建LoadBalancer服务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须确保
port参数是一个主机端口,不被其他LoadBalancer服务或 MicroShift 组件的红帽构建。运行以下命令,验证服务文件是否存在,是否正确分配了外部 IP 地址,并且外部 IP 与节点 IP 相同:
oc get svc -n $NAMESPACE
$ oc get svc -n $NAMESPACECopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx LoadBalancer 10.43.183.104 192.168.1.241 81:32434/TCP 2m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx LoadBalancer 10.43.183.104 192.168.1.241 81:32434/TCP 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
以下命令使用
LoadBalancer服务配置的外部 IP 地址形成五个到示例nginx应用程序的连接。命令的结果是这些服务器 IP 地址的列表。使用以下命令验证负载均衡器是否向所有正在运行的应用程序发送请求:EXTERNAL_IP=192.168.1.241 seq 5 | xargs -Iz curl -s -I http://$EXTERNAL_IP:81 | grep X-Server-IP
EXTERNAL_IP=192.168.1.241 seq 5 | xargs -Iz curl -s -I http://$EXTERNAL_IP:81 | grep X-Server-IPCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果负载均衡器成功将流量分发到应用程序,则上一命令的输出包含不同的 IP 地址,例如:
输出示例
X-Server-IP: 10.42.0.41 X-Server-IP: 10.42.0.41 X-Server-IP: 10.42.0.43 X-Server-IP: 10.42.0.41 X-Server-IP: 10.42.0.43
X-Server-IP: 10.42.0.41 X-Server-IP: 10.42.0.41 X-Server-IP: 10.42.0.43 X-Server-IP: 10.42.0.41 X-Server-IP: 10.42.0.43Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.9. 阻止对特定主机接口上 NodePort 服务的外部访问 复制链接链接已复制到粘贴板!
OVN-Kubernetes 不限制可以从红帽构建的 MicroShift 节点外部访问 NodePort 服务的主机接口。以下流程解释了如何在特定主机接口上阻止 NodePort 服务并限制外部访问。
先决条件
- 您必须具有具有 root 特权的帐户。
流程
运行以下命令,将
NODEPORT变量更改为分配给 Kubernetes NodePort 服务的主机端口号:export NODEPORT=30700
# export NODEPORT=30700Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
INTERFACE_IP值从您要阻止的主机接口更改为 IP 地址。例如:export INTERFACE_IP=192.168.150.33
# export INTERFACE_IP=192.168.150.33Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
nat表 PREROUTING 链中插入一条新规则,以丢弃与目标端口和 IP 地址匹配的所有数据包。例如:sudo nft -a insert rule ip nat PREROUTING tcp dport $NODEPORT ip daddr $INTERFACE_IP drop
$ sudo nft -a insert rule ip nat PREROUTING tcp dport $NODEPORT ip daddr $INTERFACE_IP dropCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令列出新规则:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意请记录下新添加的规则的
handle号。您需要删除以下步骤中的handle号。使用以下示例命令删除自定义规则:
sudo nft -a delete rule ip nat PREROUTING handle 134
$ sudo nft -a delete rule ip nat PREROUTING handle 134Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.10. 多播 DNS 协议 复制链接链接已复制到粘贴板!
多播 DNS 协议 (mDNS) 允许使用在 5353/UDP 端口上公开的多播进行名称解析和服务发现。
红帽构建的 MicroShift 包括一个嵌入式 mDNS 服务器用于部署场景,在这种情况下,无法重新配置权威 DNS 服务器来将客户端指向红帽构建的 MicroShift 上的服务。嵌入式 DNS 服务器允许红帽构建的 MicroShift 公开的 .local 域由 LAN 上的其他元素发现。
第 2 章 使用防火墙 复制链接链接已复制到粘贴板!
红帽构建的 MicroShift 中不需要防火墙,但使用防火墙可以防止对红帽构建的 MicroShift API 的不必要的访问权限。
2.1. 关于通过防火墙的网络流量 复制链接链接已复制到粘贴板!
firewalld 是一个在后台运行并响应连接请求的网络服务,创建基于主机的动态自定义防火墙。如果您使用带有红帽构建的 MicroShift 的 Red Hat Enterprise Linux (RHEL) for Edge,则应已安装 firewalld,您只需要配置它。遵循的步骤中提供了详细信息。总体而言,当 firewalld 服务运行时,您必须明确允许以下 OVN-Kubernetes 流量:
- CNI pod 到 CNI pod
- CNI pod 到 Host-Network pod Host-Network pod 到 Host-Network pod
- CNI pod
- 使用 CNI 网络的 Kubernetes pod
- Host-Network pod
-
使用主机网络的 Kubernetes pod,您可以按照以下步骤配置
firewalld服务。在大多数情况下,firewalld 是 {rhel} 安装的一部分。如果没有 firewalld,您可以参照本节中的简单流程安装它。
红帽构建的 MicroShift pod 必须有权访问内部 CoreDNS 组件和 API 服务器。
2.2. 安装 firewalld 服务 复制链接链接已复制到粘贴板!
如果您使用 RHEL for Edge,则应该安装 firewalld。要使用该服务,您可以简单地进行配置。如果您没有 firewalld,但希望使用它,则可以使用以下步骤。
使用以下步骤为 MicroShift 的红帽构建安装并运行 firewalld 服务。
流程
可选:运行以下命令来检查系统中的 firewalld :
rpm -q firewalld
$ rpm -q firewalldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有安装
firewalld服务,请运行以下命令:sudo dnf install -y firewalld
$ sudo dnf install -y firewalldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要启动防火墙,请运行以下命令:
sudo systemctl enable firewalld --now
$ sudo systemctl enable firewalld --nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 所需的防火墙设置 复制链接链接已复制到粘贴板!
在防火墙配置过程中,必须启用集群网络的 IP 地址范围。您可以使用默认值或自定义 IP 地址范围。如果您选择从默认的 10.42.0.0/16 设置自定义集群网络 IP 地址范围,还必须在防火墙配置中使用相同的自定义范围。
| IP 范围 | 防火墙规则所需的 | 描述 |
|---|---|---|
| 10.42.0.0/16 | 否 | 主机网络 pod 访问其他 pod |
| 169.254.169.1 | 是 | 主机网络 pod 访问红帽构建的 MicroShift API 服务器 |
以下是防火墙配置强制设置的命令示例:
示例命令
配置主机网络 pod 对其他 pod 的访问:
sudo firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16
$ sudo firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置主机网络 pod 访问由主机端点支持的服务,如红帽 MicroShift API 的构建:
sudo firewall-cmd --permanent --zone=trusted --add-source=169.254.169.1
$ sudo firewall-cmd --permanent --zone=trusted --add-source=169.254.169.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. 使用可选端口设置 复制链接链接已复制到粘贴板!
红帽构建的 MicroShift 防火墙服务允许可选端口设置。
流程
要在防火墙配置中添加自定义端口,请使用以下命令语法:
sudo firewall-cmd --permanent --zone=public --add-port=<port number>/<port protocol>
$ sudo firewall-cmd --permanent --zone=public --add-port=<port number>/<port protocol>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表 2.2. 可选端口 端口 协议 描述 80
TCP
用于通过 OpenShift Container Platform 路由器提供应用程序的 HTTP 端口。
443
TCP
用于通过 OpenShift Container Platform 路由器提供应用程序的 HTTPS 端口。
5353
UDP
mDNS 服务以响应 OpenShift Container Platform 路由 mDNS 主机。
30000-32767
TCP
为 NodePort 服务保留的端口范围;可用于公开 LAN 上的应用程序。
30000-32767
UDP
为 NodePort 服务保留的端口范围;可用于公开 LAN 上的应用程序。
6443
TCP
用于红帽构建的 MicroShift API 的 HTTPS API 端口。
以下是当要求从外部访问在红帽构建的 MicroShift 上运行的服务时使用的命令示例,如 API 服务器的端口 6443,例如通过路由器公开的应用程序的端口 80 和 443。
示例命令
为红帽构建的 MicroShift API 服务器配置端口:
sudo firewall-cmd --permanent --zone=public --add-port=6443/tcp
$ sudo firewall-cmd --permanent --zone=public --add-port=6443/tcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为通过路由器公开的应用程序配置端口:
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
$ sudo firewall-cmd --permanent --zone=public --add-port=80/tcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
$ sudo firewall-cmd --permanent --zone=public --add-port=443/tcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. 允许通过防火墙的网络流量 复制链接链接已复制到粘贴板!
您可以通过配置 IP 地址范围并插入 DNS 服务器来允许网络流量通过防火墙,以允许通过网络网关从 pod 的内部流量。
流程
使用以下命令之一设置 IP 地址范围:
运行以下命令,使用默认值配置 IP 地址范围:
sudo firewall-offline-cmd --permanent --zone=trusted --add-source=10.42.0.0/16
$ sudo firewall-offline-cmd --permanent --zone=trusted --add-source=10.42.0.0/16Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用自定义值配置 IP 地址范围:
sudo firewall-offline-cmd --permanent --zone=trusted --add-source=<custom IP range>
$ sudo firewall-offline-cmd --permanent --zone=trusted --add-source=<custom IP range>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要允许 pod 通过网络网关的内部流量,请运行以下命令:
sudo firewall-offline-cmd --permanent --zone=trusted --add-source=169.254.169.1
$ sudo firewall-offline-cmd --permanent --zone=trusted --add-source=169.254.169.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.1. 应用防火墙设置 复制链接链接已复制到粘贴板!
要应用防火墙设置,请使用以下步骤步骤:
流程
- 通过防火墙配置网络访问后,运行以下命令重启防火墙并应用设置:
sudo firewall-cmd --reload
$ sudo firewall-cmd --reload
2.6. 验证防火墙设置 复制链接链接已复制到粘贴板!
重启防火墙后,您可以通过列出设置来验证设置。
流程
要验证在默认公共区(如端口相关的规则)中添加的规则,请运行以下命令:
sudo firewall-cmd --list-all
$ sudo firewall-cmd --list-allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证在可信区(如 IP-range 相关规则)中添加的规则,请运行以下命令:
sudo firewall-cmd --zone=trusted --list-all
$ sudo firewall-cmd --zone=trusted --list-allCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7. 已知的防火墙问题 复制链接链接已复制到粘贴板!
-
为避免通过重新加载或重启来破坏流量流,请在启动红帽构建的 MicroShift 前执行防火墙命令。红帽构建的 MicroShift 中的 CNI 驱动程序将 iptable 规则用于某些流量流,如使用 NodePort 服务的用户。iptable 规则由 CNI 驱动程序生成和插入,但在防火墙重新加载或重启时会被删除。缺少 iptable 规则会破坏流量流。如果需要在红帽构建的 MicroShift 运行后执行 firewall 命令,请手动重启
openshift-ovn-kubernetes命名空间中的ovnkube-masterpod 来重置由 CNI 驱动程序控制的规则。