kubernetes 1.31 节点之间(1个master ,多个worker)使用了哪些端口及防火墙设置

网络使用了Calico,kubernetes 1.31 节点之间(1个master ,多个worker)使用了哪些端口?

好的,在 Kubernetes 1.31 使用 Calico 作为 CNI 网络插件的环境下,节点之间需要开放的端口会更加具体。Calico 默认使用 BGP 协议来交换路由信息,并根据配置可能使用 IP-in-IP 或 VXLAN 作为封装协议。

以下是针对您 1个 Master + 多个 Worker 架构的详细端口需求清单。


端口需求总结表

下表清晰地列出了所有必要的端口和协议。

协议端口源地址 -> 目标地址使用者说明
TCP6443所有节点 -> Master 节点Kubernetes API Server必需。所有节点都需要能访问 API Server。
TCP2379-2380Master 节点 -> Master 节点etcd必需。如果 etcd 以静态 Pod 方式部署在 Master 上。
TCP10250Master 节点 -> 所有节点kubelet必需。API Server 访问 kubelet 以获取日志、执行命令等。
TCP179所有节点 -> 所有节点Calico (BGP)必需。Calico 的 calico-node Pod 使用此端口建立 BGP 连接,交换路由信息。这是 Calico 正常工作的最关键端口
IPIP协议 4所有节点 -> 所有节点Calico (IPIP 封装)条件必需仅当 Calico 的 IPIPMode 设置为 Always 或 CrossSubnet 时需要。
UDP4789所有节点 -> 所有节点Calico (VXLAN 封装)条件必需仅当 Calico 的 VXLANMode 设置为 Always 或 CrossSubnet 时需要。
TCP & UDP5473所有节点 -> Master 节点Calico (Typha)可选仅在大规模集群中为减轻 API Server 压力而部署 Typha 时才需要。
TCP30000-32767应用客户端 -> 所有节点NodePort Services可选。如果您计划使用 NodePort 类型的服务。

各节点防火墙规则配置建议

以下是在 Rocky Linux 9.5 上使用 firewalld 的配置示例。请根据您的 Calico 安装模式(IPIP 或 VXLAN)进行调整。

1. 在 Master 节点上执行的命令

bash

# 允许 Kubernetes API Server
sudo firewall-cmd --permanent --add-port=6443/tcp
# 允许 etcd  peer 通信 (如果 etcd 在本机)
sudo firewall-cmd --permanent --add-port=2379-2380/tcp
# 允许 kubelet API
sudo firewall-cmd --permanent --add-port=10250/tcp
# 允许 Calico BGP
sudo firewall-cmd --permanent --add-port=179/tcp

# 如果使用 IPIP 模式,加载 ipip 内核模块并允许协议
sudo modprobe ipip
sudo firewall-cmd --permanent --add-rich-rule='rule protocol value="ipip" accept'

# 如果使用 VXLAN 模式,允许 VXLAN 端口
# sudo firewall-cmd --permanent --add-port=4789/udp

# 如果启用了 Typha,允许 Typha 端口
# sudo firewall-cmd --permanent --add-port=5473/tcp

# 重载防火墙使配置生效
sudo firewall-cmd --reload
2. 在所有 Worker 节点上执行的命令

bash

# 允许 kubelet API
sudo firewall-cmd --permanent --add-port=10250/tcp
# 允许 Calico BGP
sudo firewall-cmd --permanent --add-port=179/tcp

# 如果使用 IPIP 模式
sudo modprobe ipip
sudo firewall-cmd --permanent --add-rich-rule='rule protocol value="ipip" accept'

# 如果使用 VXLAN 模式
# sudo firewall-cmd --permanent --add-port=4789/udp

# 重载防火墙使配置生效
sudo firewall-cmd --reload

如何确认您的 Calico 模式

您可以通过检查 Calico 的 IP 池配置来确定使用的是 IPIP 还是 VXLAN。

bash

kubectl get ippool -o yaml

在输出中,查找 spec.ipipMode 或 spec.vxlanMode 字段。

  • 如果 ipipMode: Always,则需要开放 IPIP 协议 (协议 4)

  • 如果 vxlanMode: Always,则需要开放 UDP 4789 端口。

  • 如果模式是 CrossSubnet,则跨网段通信时需要上述封装,同子网则不需要。为简单起见,通常建议直接放行。

验证网络连通性

配置完防火墙后,请进行验证:

  1. 验证 Pod 网络:在不同的节点上创建 Pod,并互相 ping 对方的 Pod IP。

  2. 验证服务网络:创建一个简单的 Web 应用并通过 NodePort 或 ClusterIP 访问。

  3. 验证 Calico BGP 连接:登录到节点,使用 calicoctl 检查 BGP 状态。

    bash

    # 如果安装了 calicoctl
    sudo calicoctl node status

    输出应显示与其他每个节点的 BGP peer 状态为 Established

总结:对于您的环境,最关键的是确保所有节点之间的 TCP 179 (BGP)、TCP 10250 (kubelet) 和 TCP 6443 (API Server) 端口畅通,并根据您的 Calico 配置决定是否开放 IPIP 或 VXLAN 端口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值