【问题标题】:kube-proxy upgrade from 1.21 to 1.22 insert wrong iptables rulekube-proxy 从 1.21 升级到 1.22 插入错误的 iptables 规则
【发布时间】:2022-01-24 22:03:14
【问题描述】:

我正在尝试将 kube-proxy 从 1.21 升级到 1.22 的问题。 已经将控制平面组件(apiserver、调度程序和控制器管理器)更新到 1.22,没有任何问题。 当我将第一个工作节点(kubelet 和 kube-proxy)从 1.21 更新到 1.22 时,节点上的 LoadBalancer 服务变得无法访问,恢复到 1.21 解决了这个问题。

我验证了 ARP 请求接收到带有正确 MAC 地址的回复,并且我在节点的 NIC 上使用 tcpdump 看到了正确的流量。

在对 iptables 规则中的工作节点进行一些调查后,我注意到在 1.22 节点上我有这个规则(nat 表):

-A KUBE-XLB-GYH4OE6JZWRDML2Y -m comment --comment "swp-customer/swpc-25abfa45-ac5c-487f-81b9-178602c569f3:http has no local endpoints" -j KUBE-MARK-DROP

在 1.21 上,我有这个规则:

-A KUBE-XLB-B67G6CBBIZ3WMS7Y -m comment --comment "Balancing rule 0 for swp-customer/swpc-2ad2a9e3-25cf-430e-893b-dbd4ec77b197:http" -j KUBE-SEP-3LIV6VCSPFRWVHFU
-A KUBE-SEP-3LIV6VCSPFRWVHFU -p tcp -m comment --comment "swp-customer/swpc-2ad2a9e3-25cf-430e-893b-dbd4ec77b197:http" -m tcp -j DNAT --to-destination 10.244.1.219:80

第二个,在 1.21 节点上,是正确的规则,以便将流量 nat 到容器。

我猜 kube-proxy 1.22 认为没有本地端点(在同一节点上恢复到 kube-proxy 1.21 可以正常工作),但我不知道为什么。 kube-proxy 似乎会定期启动,并且在他们的日志中没有什么奇怪的。

我的环境:

  • k8s 节点:基于 CentOS 7 的 VM,VNIC 桥接到管理程序上的物理 NIC
  • 容器运行时:docker://19.3.5
  • k8s 集群部署模式:从零开始
  • k8s 网络插件:flannel + metallb

非常感谢您的帮助

【问题讨论】:

    标签: kubernetes kube-proxy


    【解决方案1】:

    删除并重新创建服务,使用相同的规范,解决了问题。

    我不知道为什么,因为我比较了保存的 yaml 文件,删除前和重新创建后,它们具有相同的字段。

    【讨论】:

      猜你喜欢
      • 2015-05-22
      • 2019-07-21
      • 1970-01-01
      • 2021-09-11
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 2017-01-10
      相关资源
      最近更新 更多