关于 Rancher 与防火墙 firewalld 的一些注意事项

问题描述


按照网上安装 Rancher 教程,一般都要求先关闭防火墙,于是在关闭防火墙状态下完成安装。

systemctl stop firewalld
systemctl disable firewalld

但是由于公司安全要求,需要开启防火墙,并将 rancher 相关的端口进行开放,于是在 rancher 正常运行状态下启用防火墙。

systemctl start firewalld
systemctl enable firewalld

根据官方操作文档 点击查看 加入相关端口。

  firewall-cmd --permanent --add-port 22/tcp
  firewall-cmd --permanent --add-port 80/tcp
  firewall-cmd --permanent --add-port 443/tcp
  firewall-cmd --permanent --add-port 2379/tcp
  firewall-cmd --permanent --add-port 2380/tcp
  firewall-cmd --permanent --add-port 6443/tcp
  firewall-cmd --permanent --add-port 6444/tcp
  firewall-cmd --permanent --add-port 8443/tcp
  firewall-cmd --permanent --add-port 8472/udp
  firewall-cmd --permanent --add-port 9345/tcp
  firewall-cmd --permanent --add-port 10249/tcp
  firewall-cmd --permanent --add-port 10250/tcp
  firewall-cmd --permanent --add-port 10256/tcp
  firewall-cmd --permanent --add-port 30935/tcp
  firewall-cmd --permanent --add-port 31477/tcp
  firewall-cmd --reload

reload 之后 rancher 节点之间部分通信就异常了,一般提示为
10.xx.xx.xx:443 timeout
10.xx.xx.xx:443 no route to host
即集群节点与 rancher 主节点之间无法通信。


原因分析


firewalld 的相关操作本质上还是对 iptables 的规则操作;
docker 启动容器时也会直接操作 iptables 写入规则;
firewalld --reload 会刷新整个规则表,将 docker 写入的规则刷掉;
因此导致节点间无法访问。


解决方法


问题分析清楚了也就好解决了。

  1. 停止 docker 服务,防止写入新的规则
  2. 清空 iptables 规则列表
    # 查看当前规则
    iptables -L -n
    # 清空全部规则
    iptables -F
    
  3. reload firewalld 服务,将 firewalld 配置的规则写入 iptables
    # 查看 firewalld 当前规则
    firewall-cmd  --list-all
    # 刷新规则,写入 iptables
    firewall-cmd  --reload
    
  4. 启动 docker 服务,让 docker 将相关规则写入 iptables
    systemctl start docker
    

至此,所有规则已按顺序完全写入 iptables 中,互不影响,一切恢复正常。


注意事项


如果还是有节点间 10.42.xx.xx 或者 10.43.xx.xx 无法访问,可以加入以下规则:

  # 这两行非常非常非常重要,没有的话后续会报错,Rancher 节点间无法通信
  firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 
  firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16
  firewall-cmd --reload
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值