【问题标题】:iptables is growing gradually on Kubernetes nodesiptables 在 Kubernetes 节点上逐渐增长
【发布时间】:2020-03-11 21:32:15
【问题描述】:

我们有一个内部 Kubernetes 1.15 集群,它在裸机 (Ubuntu 18.04) 上运行,由 7 个工作节点和 1 个主节点组成。我们有许多命名空间,每个命名空间托管 25 多个不同的组件,其中一些组件需要通过 NodePort 暴露给外部(不能为这些组件提供反向代理)。

问题是我注意到 iptables 的大小逐渐增加。在 2 周的时间里,大约 400 行代码被添加到 iptables 中,而我们没有更改集群上运行的组件,并且这些机器上也没有运行其他任何东西。由于这发生在我保存 iptables 之前,并且当我检查时我没有在 iptables 中看到任何奇怪的东西,这只是集群所需的正常规则。一个大的 iptable 会导致很多问题,包括网络丢包,我正在寻找解决方案。

我在 Kubernetes 博客上注意到了这篇文章,但这只是一个跟踪工具,而不是解决问题的工具:https://kubernetes.io/blog/2019/04/19/introducing-kube-iptables-tailer/

【问题讨论】:

    标签: kubernetes iptables


    【解决方案1】:

    究竟是什么困扰着你?

    • 是 iptables 的大小吗?
    • 您在安排新服务时是否遇到性能问题(这意味着您的服务需要很多时间才能获得 IP)?

    如果只是大小,那么当您开始拥有数以百计的 pod/服务时,这是可以预料的。这就是 iptable 的工作原理。

    如果这是一个性能问题,那么这意味着您可能有数千个组件。如果是这样的话,Kubernetes 1.11 引入了 IPVS 来解决这个问题。

    无论如何,我邀请你看看那两篇文章:

    1. https://kubernetes.io/blog/2018/07/09/ipvs-based-in-cluster-load-balancing-deep-dive/
    2. https://www.projectcalico.org/comparing-kube-proxy-modes-iptables-or-ipvs/

    您应该更好地理解为什么您的 iptable 中有很多条目,或者阅读它们后为什么速度很慢。

    【讨论】:

    • 正如我在问题中提到的,我们需要公开许多服务和端口,因为 NodePort 和 k8s 正在为 NodePort 服务中的每个端口编写 7 行,所以我知道它们来自哪里。问题是在不更改配置/添加新组件的情况下,行数会增加,因此 iptables 的大小会增加。一个大的 iptable(超过 10k 行)会导致很多问题,包括丢包甚至内核溢出。 IPVS 也在编辑 iptables,但我不知道到什么程度。我的主要问题是为什么 iptable 的大小会增长?
    • 哦,我不知道表在没有添加新组件的情况下会增长。您的集群是否有一些更改,例如计划的 cronjob(这可以解释新 Pod 的幻影以及表中的新条目)、HPA 或只是节点维护导致 Pod 被重新调度(因此,新的 IP 生成) ?
    • 我们没有 cronjobs 并且节点非常稳定并且很少需要维护(到目前为止我们唯一的问题是 iptables)但是我们广泛使用 HPA。由于BPF,我正在考虑使用cilium,听说可以解决iptables的问题。
    猜你喜欢
    • 2019-01-22
    • 1970-01-01
    • 2015-08-30
    • 2016-08-03
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2020-11-07
    • 2020-07-03
    相关资源
    最近更新 更多