0

我在笔记本电脑上运行 microk8s 系统,使用 metallb 作为负载平衡器,使用大使边缘堆栈作为入口。一切正常,包括一个运行 kubectl 调用的 bash 脚本来设置它并删除它等。

当我尝试将相同的设置安装到我们要用于 QA 的本地服务器上时,就会出现问题。我运行我的脚本,但它在中途失败。microk8s 运行良好,我可以看到 metallb 和 Ambassador 都设置正确(即与我的笔记本电脑上的相同)。但是每个请求都返回“连接到 192.168.50.40 端口 443 失败:连接被拒绝”,这是我的脚本失败的地方。

我认为它可能与路由器有关,因此我在 /etc/hosts 中添加了一个条目,以将消息中的 ip 地址映射到我使用的域名。我可以从服务器上的终端窗口 ping 域名,并得到预期的成功响应。但是,如果我尝试使用 https URL 的 curl 命令,我会收到相同的连接被拒绝错误,这意味着它与外部连接无关。

我的入口只监听 https,而不是 http,但我将其设置为监听 http(端口 80)并尝试过,得到相同的连接被拒绝错误。当我在笔记本电脑上做同样的事情时,它给了我一个成功的响应。

我的笔记本电脑设置和本地服务器之间的区别是:

  • 在 metallb 上设置了不同的 IP 地址范围。
  • 不同的域名
  • 不同的 TLS 证书

所有这些都作为参数传递给设置脚本。本地服务器还具有两个以太网接口,一个在消息中显示,另一个是 192.168.50.50。我注意到 metallb 正在监听第二个,所以我编辑了 kubelet 文件 (/var/snap/microk8s/current/args/kubelet) 以指定正确的地址,重置 microk8s 并验证它现在使用正确的地址。metallb 命令只是

microk8s enable metallb 192.168.50.40-192.168.50.40

即池中的一个地址。我在我的笔记本电脑上做同样的事情,但地址不同。

但它仍然给我这个错误。我在 metallb 日志和大使日志中看不到任何可能的错误,实际上也没有证据表明请求已达到。我的同事一直在暗示大使配置有问题,但它与工作笔记本电脑版本完全相同(除了上述参数),所以我很难对此保持开放的态度。

我们检查了防火墙规则(尽管我希望内部请求没有触及防火墙)并且它们很好,让 443 的所有内容都通过。但是有些东西在某处阻止了 443 请求。有人知道我接下来应该看什么吗?谢谢你的帮助。

更新:我提到问题机器上有两个接口:192.168.50.40和192.168.50.50。我们一直在尝试使用第一个,但今天早上我们切换到使用第二个。突然间一切正常。似乎 microk8s 中的某些东西真的只喜欢其中一个接口,现在的问题是为什么。

版本(两种环境相同): 操作系统:Ubuntu 20.04.3 LTS microk8s:1.22 metallb:0.9.3 Ambassador:2.0.5

4

0 回答 0