7.8. 公开服务时防火墙端口概述
当您在 MicroShift 上运行服务时,firewalld 通常处于活跃状态。这可能会破坏 MicroShift 上的某些服务,因为防火墙可能会阻止到端口的流量。如果您希望某些服务可从主机外部访问,您必须确保打开所需的防火墙端口。打开端口有几个选项:
OVN-Kubernetes 会自动提供
NodePort
和LoadBalancer
类型的服务。在这些情况下,OVN-Kubernetes 会添加 iptables 规则,以便到节点 IP 地址的流量传送到相关端口。这使用 PREROUTING 规则链完成,然后转发到 OVN-K,以绕过本地主机端口和服务的 firewalld 规则。iptables 和 firewalld 由 Red Hat Enterprise Linux (RHEL) 9 中的 nftables 支持。iptables 生成的 nftables 规则始终优先于 firewalld 生成的规则。
带有
HostPort
参数设置的 Pod 会自动可用。这还包括router-default
pod,它使用端口 80 和 443。对于
HostPort
pod,CRI-O 配置将 iptables DNAT (目标网络地址转换)设置为 pod 的 IP 地址和端口。
这些方法可用于客户端,无论它们是否位于同一主机上还是远程主机上。iptables 规则由 OVN-Kubernetes 和 CRI-O 添加,附加到 PREROUTING 和 OUTPUT 链。本地流量通过 OUTPUT 链,接口设置为 lo
类型。DNAT 在达到 INPUT 链中的填写规则之前运行。
因为 MicroShift API 服务器不在 CRI-O 中运行,所以它受到防火墙配置的影响。您可以在防火墙中打开端口 6443,以访问 MicroShift 集群中的 API 服务器。