关联文章列表
前言
本文讲解网络端口的放行,如果您是本地测试并且完全关闭了网络防火墙的,可以直接跳过本文介绍!
端口介绍
💡 防火墙需要放行哪些端口,通常需要开启以下端口:
- TCP端口:6443、2379-2380、10250、10251、10252、10255、30000-32767
- UDP端口:8285
端口 | 协议 | 说明 |
---|---|---|
6443 | TCP | 用于 Kubernetes API Server 的访问 |
2379-2380 | TCP | 用于 etcd 数据库的通信 |
10250 | TCP | 用于 kubelet 的 API Server 通信 |
10251 | TCP | 用于 kube-scheduler 的选举通信 |
10252 | TCP | 用于 kube-controller-manager 的选举通信 |
10255 | TCP | 用于 kubelet 的只读 API Server 通信 |
30000-32767 | TCP | 用于 NodePort 类型的 Service 的访问 |
8285 | UDP | 用于 kube-proxy 的 UDP 数据包转发 |
8472 | UDP | flannel 网络使用的 VxLAN 端口 |
需要注意的是,这些端口只是 Kubernetes 集群中通信和交互的常用端口,实际使用时可能还需要根据具体情况进行调整和配置。同时,还需要根据集群环境和网络环境等因素,合理地配置防火墙规则,保证集群的安全性和稳定性。
添加防火墙规则
# 为 IPv4 添加规则放行 VRRP 通信(IP 协议号 112)
sudo iptables -I INPUT -s 10.12.3.0/24 -i eth0 -p 112 -j ACCEPT
#
为 IPv6 添加规则(如果需要)
sudo ip6tables -I INPUT -s 10.12.3.0/24 -i eth0 -p 112 -j ACCEPT
# 如果您使用 Ingress 和 ClusterIP 类型的 Service 对外提供服务,而不是 NodePort 类型的服务,
# 那么您不需要放行 NodePort 范围内的端口(30000-32767)
# 所以下面的规则按照实际需要看看是否需要调整
sudo iptables -A INPUT -s 10.12.3.0/24 -p tcp -i eth0 -m multiport --dports 6443,2379:2380,10250,10251,10252,10255,30000:32767 -j ACCEPT
sudo iptables -A INPUT -s 192.168.3.0/24 -p tcp -i eth0 -m multiport --dports 6443,2379:2380,10250,10251,10252,10255,30000:32767 -j ACCEPT
sudo iptables -A INPUT -s 10.12.3.0/24 -p udp -i eth0 -m udp --dport 8285 -j ACCEPT
sudo iptables -A INPUT -s 192.168.3.0/24 -p udp -i eth0 -m udp --dport 8285 -j ACCEPT
sudo iptables -I INPUT -s 10.12.3.0/24 -p udp -i eth0 -m udp --dport 8472 -j ACCEPT
sudo iptables -I INPUT -s 192.168.3.0/24 -p udp -i eth0 -m udp --dport 8472 -j ACCEPT
# 保存 iptables 配置 centos 7 可用
sudo service iptables save
sudo service ip6tables save
# 对于 CentOS 8,您需要安装 iptables-services 软件包才能使用 iptables save 命令
sudo yum install -y iptables-services
sudo systemctl enable --now iptables
sudo systemctl enable --now ip6tables
sudo iptables-save > /etc/sysconfig/iptables
sudo ip6tables-save > /etc/sysconfig/ip6tables
# 将规则保存到 /etc/sysconfig/iptables文件中
sudo iptables-save | sudo tee /etc/sysconfig/iptables
# 重启iptables服务使其生效
sudo systemctl restart iptables
# 需要注意的是,在添加规则之前,可以使用以下命令备份当前的iptables规则
sudo iptables-save > /etc/sysconfig/iptables.bak
# 如果需要恢复之前备份的 iptables 规则,可以使用以下命令
sudo iptables-restore < /etc/sysconfig/iptables.bak
# 【注意】 这条规则在集群搭建网络组件后执行
iptables -A RH-Firewall-1-INPUT -s 10.244.0.0/16 -m state --state NEW -j ACCEPT