在某项目中由于使用的是基于Ubuntu类似的发行版无法像Centos7系统一样使用Firewalld拦截某些由Docker/K8s容器创建的高危端口。
由于无法复现当时项目使用的系统,只能在Ubuntu 22.04.2 LTS
中进行测试了。
这次在安装k8s前我已经开启了ufw,并且将集群的IP添加运行的规则。
一、修改ufw默认的配置
修改/etc/default/ufw
,把DEFAULT_FORWARD_POLICY
修改为下面
DEFAULT_FORWARD_POLICY="ACCEPT"
二、修改docker默认的配置
修改/etc/default/docker
里面的DOCKER_OPTS
DOCKER_OPTS="--iptables=false
按需修改,因为里面可能有个别不由于的配置项。
三、修改/etc/ufw/before.rules文件
修改/etc/ufw/before.rules
文件,在*filter
前面添加如下内容
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE COMMIT
四、修改daemon.json文件
由于我安装docker时配置了daemon.json
文件,使用这里追加下面的参数
"iptables": false
五、重启Docker服务
service docker restart
这样只能手动按需开发对应的端口了。
配置"iptables": false
后再初始化k8s会报错。。。。。。
ChiuYut
2023年04月26日