重启后Ingress无法到达一个节点,其他没问题

Ingress unable to reach one node after reboot, others are okay

我有一个包含 4 个节点(3 个 raspi、1 个 NUC)的集群,并设置了几个不同的工作负载。 集群本身运行良好,所以我怀疑这是配置的普遍问题。 重新启动所有节点后,集群恢复正常,所有 pods 都 运行 没有问题。 不幸的是,在我的一个节点 (NUC) 上 运行ning 的 pods 无法再通过入口访问。 如果我通过 kube-proxy 访问它们,我可以看到 pods 本身 运行 正常并且 http 服务的行为符合预期。 我把NUC节点从Ubuntu从21.04升级到20.10,可能与问题有关,但未确认。

当相同的 pods 被安排到其他节点时,一切都按预期进行。 对于 NUC 节点上的 pods,我在入口控制器日志中看到以下内容:

2021/08/09 09:17:28 [error] 1497#1497: *1027899 upstream timed out (110: Operation timed out) while connecting to upstream, client: 10.244.1.1, server: gitea.fritz.box, request: "GET / HTTP/2.0", upstream: "http://10.244.3.50:3000/", host: "gitea.fritz.box"

我只能假设问题与集群内部网络有关,并比较了 iptables 规则等,但没有发现似乎相关的差异。

NUC 节点 运行 正在 Ubuntu 21.04 上使用 kube v1.21.1,raspis 运行 Ubuntu 20.04.2 LTS。主节点仍然是 运行v1.21.1,两个工作节点已经 运行v.1.22.0,工作正常。

我发现一个线程指出 metallb 和 nftables 之间的不兼容性 (https://github.com/metallb/metallb/issues/451),虽然它有点旧,但我已经按照建议更改为 xtables (update-alternatives --set iptables /usr/sbin/iptables-legacy ...) 没有成功。

目前我运行不知道去哪里找。 谁能提出可能的问题?

提前致谢!

将 flannel 从 13.1-rc2 更新到 14.0 似乎已经成功。 也许某些 iptables 规则被搞砸了并被重新修订,也许 14.0 是与 21.04 一起工作所必需的?谁知道... 我回来了 运行 很好很开心 :)