美文网首页
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