一次网络不通“争吵”引发的思考

💡 原文中文,约6900字,阅读约需17分钟。
📝

内容提要

本文讨论了在Kubernetes集群中访问CLB时可能出现的问题,解决方法包括使用两个CLB或阿里云的svc注解方式。还讨论了Kubernetes 1.24版本中IPVS的变化以及集群内外访问SLB和NodePort的情况。

🎯

关键要点

  • Kubernetes集群内访问CLB时可能出现连接拒绝的问题。
  • 集群内访问CLB的443端口不通,但80端口正常。
  • CLB的IP被绑定到K8s的dummy网卡上,导致443端口没有对应的ipvs规则。
  • 建议使用两个CLB分别处理集群内外的服务。
  • 阿里云svc注解可以避免CLB的IP绑定到dummy网卡上。
  • Kubernetes 1.24版本中IPVS的行为变化影响了流量策略。
  • externalTrafficPolicy为Cluster时,集群内访问会丢失源IP。
  • externalTrafficPolicy为Local时,集群内访问可以保留源IP。
  • 集群外访问SLB和NodePort的情况与1.24版本之前相似。
  • 集群内访问NodePort时,只有有Endpoint的节点才能通。
  • 没有Endpoint的节点访问NodePort会失败。
  • 集群内访问SLB或NodePort的行为在1.24版本之后有所变化。
  • 集群内访问没有后端pod的节点时,可能会出现连接超时或失败的情况。
➡️

继续阅读