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


    问题描述


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

    systemctl stop firewalld
    systemctl disable firewalld
    
    • 1
    • 2

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

    systemctl start firewalld
    systemctl enable firewalld
    
    • 1
    • 2

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

      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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    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
      
      • 1
      • 2
      • 3
      • 4
    3. reload firewalld 服务,将 firewalld 配置的规则写入 iptables
      # 查看 firewalld 当前规则
      firewall-cmd  --list-all
      # 刷新规则,写入 iptables
      firewall-cmd  --reload
      
      • 1
      • 2
      • 3
      • 4
    4. 启动 docker 服务,让 docker 将相关规则写入 iptables
      systemctl start docker
      
      • 1

    至此,所有规则已按顺序完全写入 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
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    Hive 常用存储、压缩格式
    几千粉丝的视频账号播放量只有几百怎么办?借助批量剪辑快速提升播放量
    Java web中,服务器运行不过来
    【Spring】yaml自定义参数添加提示功能
    Docker 容器技术 (上) 环境安装和部署、容器镜像、使用IDEA构建Springboot程序镜像、远程仓库、容器网络管理
    Go语言中获取IP
    30张图 讲清楚Redis Cluster
    龙蜥开发者说:海纳百川,有容乃大,我在龙蜥社区的升级之旅 | 第 11 期
    【SpringBoot 】策略模式 之 一键切换文件上传方式
    芯邦'CBM2099E
  • 原文地址:https://blog.csdn.net/qq12547345/article/details/126278105