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