美文网首页
DockerSwarm与K8S由于Firewalld引起的网络问

DockerSwarm与K8S由于Firewalld引起的网络问

作者: 野生DBNull | 来源:发表于2022-12-19 21:15 被阅读0次

    问题表现

    K8S集群中的问题

    需求在集群中挂载一个分布式文件存储系统,由于集群本身是rancher,理所当然选择了longhorn
    服务器系统为Centos7.6,在安装部署longhorn的时候发现这玩意能装上而且各项检查都正常,但是在PVC调度的时候会发现无法调度到具体的磁盘负载机器上去。

    阅读官方资料之后发现在RHEL的机器上Rancher2.6.x的版本他们建议关闭防火墙,2.7.x的版本建议将防护墙升级到v7.x,否则会出现一些奇怪的问题。但是你安装官方文档中的脚本去执行只能将firewalld升级到0.6.3版本。然后在Github的issues中我找到了思路围观地址

    DockerSwarm中的问题

    DockerSwarm中的问题更加离谱,具体表现为三台机器的swarm集群,程序部署在第三台上面,你用第二台机器的IP去访问,本来是可以的,在 firewalld reload 之后你会发现只能用第三台机器的IP去访问了,而且集群内部的网络也出现了问题,整个overlay 的网络基本瘫痪了。复查iptables中的规则后发现所有的转发规则都丢了。只能重启Docker去解决这个问题。

    解决思路

    知道原理之后就简单了,直接简单粗暴,使用ufw替换firewalld,替换之后DockerSwarm与Rancher集群全部正常,iptables转发正常。

    编写解决脚本

    #! /bin/bash
    
    uninstall_firewalld() {
        systemctl stop firewalld
        systemctl disable firewalld
    }
    
    install_ufw() {
        yum install epel-release -y
        yum install ufw -y
    }
    
    start_ufw() {
        systemctl start ufw
        systemctl enable ufw
    
        ufw allow 22/tcp
        ufw default deny
    
        ufw reload
        ufw status
    } 
    
    #主函数
    main() {
        uninstall_firewalld
        install_ufw
        start_ufw
    }
    
    main
    
    

    使用说明

    ufw allow 8888/tcp # 开启tcp端口
    ufw allow 8888/udp  # 开启tcp端口
    
    ufw allow 9998:9999/tcp  # 开启一批端口
    ufw allow 9998:9999/udp  # 开启一批端口
    
    ufw deny 8888/tcp  # 关闭端口
    ufw deny 8888/udp  # 关闭端口
    
    ufw deny 9998:9999/tcp  # 关闭一批端口
    ufw deny 9998:9999/udp # 关闭一批端口
    
    
    sudo ufw allow from 15.15.15.0/24 to any port 22
    sudo ufw allow from 15.15.15.1 to any port 22
    
    sudo ufw deny from 15.15.15.0/24 to any port 22
    sudo ufw deny from 15.15.15.1 to any port 22
    
    ufw reload # 重启ufw
    

    替换完之后全部正常,主要原因就是低版本的firewalld可能不太支持这么新的东西,毕竟好多年的玩意了,不支持也正常。

    相关文章

      网友评论

          本文标题:DockerSwarm与K8S由于Firewalld引起的网络问

          本文链接:https://www.haomeiwen.com/subject/wmfuqdtx.html