设置 IP 转发后 Kubernetes 集群无法正常工作

设置 IP 转发后 Kubernetes 集群无法正常工作

我正在做一个研究项目,我们的最终目标是使用多个 Raspberry Pi 构建一个 Kubernetes 集群。我提到了我们使用 Raspberry Pi 作为参考,但我认为这与我的问题不太相关。

我对网络还很陌生,所以如果我问了一个琐碎的问题,请原谅我。

最近,我的任务是配置其中一个 Raspberry Pi(主服务器)作为互联网和其他 Pi(工作服务器)所连接的本地网络之间的网络桥梁。

更具体地说,我将工作器连接到与主设备相连的非托管交换机。所有工作器都有静态 IP。主设备通过接口连接到互联网,eth1并通过连接到网络交换机eth0。我的目标是基本上将互联网流量从 eth0 路由到 eth1,反之亦然。

我相信我成功做到了这一点。我使用 iptables 制定了此配置的规则。这些是我使用的命令:

$ sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
$ sudo iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$ sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

我在主服务器上启用了 iPv4 转发,并在工作服务器上配置了默认网关和 DNS 服务器。我只是使用了 Google 的主 DNS 服务器和辅助 DNS 服务器,并使用eth0主服务器的 IP 地址作为工作服务器的默认网关。我相信这是成功的,因为我能够 ping 通 Google、下载 kubernetes 并使用 在系统上执行更新apt-get

现在我已经设置了此网络设置的上下文,我的主要问题是关于此设置的完整性。我在尝试将工作程序连接到主服务器时遇到了 kubernetes 问题。具体来说,它无法获取默认网关。以下是尝试从工作程序加入服务器时的标准输出,以防有人有更好的理解。

INFO[2020-04-12T14:43:40.167158119-04:00] Starting k3s agent v1.17.4+k3s1 (3eee8ac3)   
INFO[2020-04-12T14:43:40.168078475-04:00] module overlay was already loaded            
INFO[2020-04-12T14:43:40.168178317-04:00] module nf_conntrack was already loaded       
INFO[2020-04-12T14:43:40.168234827-04:00] module br_netfilter was already loaded       
INFO[2020-04-12T14:43:40.169668407-04:00] Running load balancer 127.0.0.1:43169 -> [red:6443] 
ERRO[2020-04-12T14:43:40.858464467-04:00] unable to select an IP from default routes.  
ERRO[2020-04-12T14:43:46.124906066-04:00] unable to select an IP from default routes.  

作为参考,red是主服务器的主机名,并且工作服务器知道 IP,因为它在/etc/hosts

我确信主机名是已知的,因为我能够执行类似操作ssh pi@red

我不会过多地介绍 kubernetes 设置,因为这不是我问题的重点。当工作节点直接连接到我的 wifi 路由器时,我能够让集群工作,但现在我已将其配置为使用连接到主节点的网络交换机,它不再工作。所以我想知道我的配置是否缺少了什么。我对此真的很困惑,因为我不明白如果存在一些潜在问题,我将如何能够从互联网上下载东西。

我在网上看到过使用 dnsmasq 之类的教程,但就我的目的而言,我为工作人员设置了一个静态 IP,所以如果我不使用 dhcp,我认为没有必要这样做。任何帮助或见解都将不胜感激!

相关内容