当使用部署在裸机上的 Kubernetes 时,是否有任何 CentOS8 防火墙规则自动应用?

Is there any CentOS8 firewall rule automatically applied when using Kubernetes deployed on bare metal?

提问人:bkk 提问时间:4/18/2023 最后编辑:bkk 更新时间:4/18/2023 访问量:39

问:

我在裸机上构建了一个简单的 Kubernetes 设置。具有 1 个主节点和 2 个工作节点:

[root@kubemaster helm-chart]$ kubectl get nodes
NAME         STATUS   ROLES           AGE   VERSION
kubemaster   Ready    control-plane   53d   v1.26.1
kubenode-1   Ready    <none>          53d   v1.26.1
kubenode-2   Ready    <none>          17d   v1.26.2

所有这些节点都在 CentOS 8 上运行,我在主机上使用 firewalld 服务来应用防火墙规则。我在这里看到的是一个非常奇怪的行为。

首先,我在两个工作节点上运行了 Nginx 入口控制器 pod。我也有一个在 kubenode-2 上运行的 echo 服务。我添加了一个入口,它基本上是将一条特定路径路由到回显服务。

如果我在 kubenode-2 上调用入口控制器,我总是可以从 echo 服务中获得所需的答案。但是如果我在 kubenode-1 上调用入口控制器,异常就会接管。:-)这意味着,我经历了非常奇怪的行为:

  • 默认情况下,它不起作用。当我在 kubenode-1 上调用入口控制器时出现超时。
  • 但是当我关闭 kubenode-2 上的“firewalld”服务时,我可以通过调用 kubenode-1 上的入口控制器来获得所需的结果。
  • 这些机器没有防火墙是不好的,所以,我总是把它重新打开。它仍在工作,我仍然通过在 kubenode-1 上调用入口控制器来获得预期的行为。
  • 但不是永远!一段时间后(可能是几个小时,但通常是 10 分钟),它停止工作,kubenode-1 上的入口控制器给了我一个暂停。无法从 kubenode-1 入口控制器访问 kubenode-2 上的 echo 服务。这很奇怪,因为我什么都不碰!因此,它会停止工作,而不会在任何地方更改任何信息或配置。如果我从头开始启动整个过程(停止防火墙,启动防火墙),它会再次回来,并且我能够在 kubenode-1 上调用 ingress controller,并从 echo 服务获得所需的响应。但不是永远,在提到 10 分钟后,它再次停止工作。

如果你想在故事中有更多的转折,如果我做 systemctl restart firewalld,从 kubenode-1 上的入口控制器访问 kubenode-2 上的 echo 服务永远不会起作用。如果我想让它再次工作,我需要执行 systemctl stop firewalld,然后是 systemctl start firewalld

如果有人理解这一点,如果那个人能对这种行为有所了解,或者给我一些建议,我需要对防火墙做什么才能让 kubenode-1 始终提供 echo 服务,我将不胜感激。

如需更多帮助,以下是我的 kubenode-2 的另外一个信息:

[root@kubenode-2 ~]$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 10250/tcp 30000-32767/tcp 6783/tcp 10255/tcp 5443/tcp 179/tcp
  protocols:
  forward: no
  masquerade: yes
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

我是否需要允许/打开更多端口?

如果您需要更多信息,请告诉我!

kubernetes ingress nginx-ingress centos8 防火墙

评论


答: 暂无答案