记一次容器环境下出现 Address not available

💡 原文中文,约6600字,阅读约需16分钟。
📝

内容提要

本文讨论了Kubernetes环境中源地址不可用的问题,原因是内核参数设置不当导致随机端口范围不够大。提供了调整内核参数解决问题的方法,并探讨了不同工具在报错时的表现和容器环境下配置端口的最佳实践。同时提醒在修改NodePort范围时需要注意的事项。

🎯

关键要点

  • Kubernetes环境中源地址不可用的问题由内核参数设置不当引起。

  • 随机端口范围不足导致无法创建新连接,需调整内核参数net.ipv4.ip_local_port_range。

  • Linux内核定义的随机端口范围为32768到60999,需根据业务需求进行调整。

  • 不同工具在连接失败时的报错信息不同,curl、nc和wget的错误处理方式各异。

  • 在容器环境中,建议将随机端口范围设置在1024到65535之间以避免特权端口冲突。

  • 可以通过securityContext和initContainers修改Pod的源端口配置。

  • 在Kubernetes 1.22及以上版本中,修改net.ipv4.ip_local_port_range需谨慎,以避免与ServiceNodePortRange冲突。

  • NodePort范围的修改需确保与内核参数不冲突,以避免网络异常和健康检查失败。

  • 调整端口范围后,需重新配置使用ip_local_port_range范围内端口的Service,以避免冲突。

➡️

继续阅读