【问题标题】:how do i add firewall rules to allow nodeports accessed over virtual ip in kubernetes如何添加防火墙规则以允许通过 kubernetes 中的虚拟 ip 访问节点端口
【发布时间】:2020-02-13 21:33:18
【问题描述】:

我有一个 kubernetes 集群,其中控制平面通过在其中配置的 keepalived 的 VIP 在 HA 中工作(仅安装在控制节点上)。禁用防火墙后,一切都按预期工作。 启用防火墙时,所有内部通信和节点端口的行为不一致。作为一个基本的启动,我已经启用了 kubernetes 所需的某些强制端口,但这对应用程序通信没有帮助。 是否有任何方法或添加任何防火墙规则可以帮助我访问 nodePorts/应用程序服务?

如果我不清楚,这是一个小总结

控制平面 1:172.16.23.110

控制平面 2:172.16.23.111

控制平面 3:172.16.23.112

Keepalived VIP:172.16.23.116

工作节点:172.16.23.120-23.125

我正在尝试通过 nodePort 访问服务,例如 https://172.16.23.116:30443

我已经在所有节点上添加了低于防火墙的情况(所有节点都是centos7.6)

cat /etc/firewalld/zones/internal.xml

<rule>
    <protocol value="vrrp" />
    <accept />
</rule>

请帮忙

【问题讨论】:

  • 您粘贴的防火墙规则不清楚。你在172.16.23.116 上允许端口30443 吗?
  • 是的,我已经启用了所有必需的端口,即使有防火墙运行,我也可以从任何非 VIP 访问它。例如:control-plane-1-ip:30443 即使启用了防火墙也能正常工作。
  • 听起来您正在尝试重新实现 MetalLB?也许就用那个?

标签: kubernetes centos firewall iptables keepalived


【解决方案1】:

我不确定,我是否正确理解了问题。

但是根据官方documentation的说法,你需要打开以下端口:

控制平面节点:

  • TCP 入站 6443*
  • TCP 入站 2379-2380
  • TCP 入站 10250
  • TCP 入站 10251
  • TCP 入站 10252

工作节点:

  • TCP 入站 10250
  • TCP 入站 30000-32767

以下是 Firewalld 的命令示例,取自 here

控制平面节点:

firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --add-masquerade --permanent
# only if you want NodePorts exposed on control plane IP as well
firewall-cmd --permanent --add-port=30000-32767/tcp
systemctl restart firewalld

工作节点:

firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --add-masquerade --permanent
systemctl restart firewalld

【讨论】:

  • 是的,我已经启用了所有必需的端口,即使有防火墙运行,我也可以从任何非 VIP 访问它。例如:control-plane-1-ip:30443 即使在启用防火墙的情况下也能正常工作。
  • 那么问题出在 Keepalived VIP 上。 Keepalived VIP 的日志中是否有任何内容?它是如何配置的?
  • 没什么。只是普通的日志。。Feb 13 08:47:25 rkha-master1220 Keepalived_healthcheckers[1387]: HTTP status code success to [172.16.22.131]:6443 url(1). Feb 13 08:47:25 rkha-master1220 Keepalived_healthcheckers[1387]: Remote Web server [172.16.22.131]:6443 succeed on service. Feb 13 08:47:25 rkha-master1220 Keepalived_healthcheckers[1387]: Adding service [172.16.22.131]:6443 to VS [172.16.23.116]:6443
  • @OhHiMark,你能用你的防火墙配置更新问题吗?可能需要在规则中添加 Keepalive VIP 的 IP
  • @ArtemGolenyaev 抱歉,我没有给你贴上 OP 的标签。我相信你想问 user2039152。
猜你喜欢
  • 2019-09-11
  • 1970-01-01
  • 2020-06-29
  • 2022-01-05
  • 2021-04-26
  • 2012-10-22
  • 2019-08-21
  • 2019-05-23
  • 2014-10-06
相关资源
最近更新 更多