You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OVH托管Kubernetes集群无法访问NodePort服务如何排查

问题
  • 在OVH托管Kubernetes集群暴露NodePort类型服务时,无法通过<node-ip>:<node-port>访问对应端口
  • 按K8s服务创建指引操作后验证结果:
    • 执行kubectl port-forward可在localhost:<target-port>正常访问服务
    • 集群内部访问服务正常
    • 外部通过<node-ip>:<node-port>访问时请求超时
  • 已检查节点绑定的安全组,当前配置显示已放行所有流量,不确定节点端口相关防火墙规则的正确配置方式
  • 安全组配置截图:
    安全组配置截图
解决方案

先做基础校验,排除配置错误:

  1. 执行kubectl get svc <对应服务名> -o yaml确认配置:
    • spec.type值为NodePort
    • spec.ports[*].nodePort字段分配的端口在K8s默认NodePort范围(30000-32767)内
    • 执行kubectl get endpoints <对应服务名>,确认后端有正常的Pod IP+端口条目,无空值。你port-forward和集群内访问正常,这步基本不会有问题。
  2. 登录任意工作节点,在节点本地执行curl 127.0.0.1:<node-port>,如果能正常返回响应,说明节点本地kube-proxy生成的iptables/ipvs转发规则正常,故障点在外部流量到节点的网络链路。

核心故障排查点(OVH托管K8s场景下90%的同类问题根因):
OVH的公共云网络有两层独立的访问控制,你配置的实例安全组只是其中一层,另一层集群默认的网络ACL默认拦截NodePort段流量:

  • 第一层:实例级安全组
    确认你配置全放行规则的安全组,确实已经绑定到所有K8s工作节点(不要配错到控制平面节点的安全组),同时确认规则优先级正确,没有更高优先级的拒绝规则覆盖放行规则,入站源地址范围覆盖你的访问来源(公网访问需配置源为0.0.0.0/0)。
  • 第二层:集群级网络ACL
    这是最容易遗漏的配置:OVH托管K8s集群创建时会自动生成集群专属的网络ACL,默认仅放行K8s组件管理端口(如22、10250),30000-32767段的业务端口默认拦截,和实例安全组是独立生效的,哪怕实例安全组全放行,ACL拦截也会导致访问超时。
    你需要进入OVH控制台的托管K8s管理页面,找到集群的安全/网络配置板块,添加入站规则放行30000-32767段的TCP、UDP流量,源地址根据实际访问需求配置即可。

额外注意事项:

  • 如果你的工作节点未绑定公网IP,填节点私网IP仅能在同VPC内网访问,公网访问需要给节点绑定公网IP,或直接使用LoadBalancer类型服务对接云负载均衡,不建议生产环境长期用NodePort暴露公网服务。
  • 不要长期保留全放行安全组规则,生产环境建议仅放行实际使用的端口,同时限制源IP范围,降低暴露风险。

内容的提问来源于stack exchange,提问作者sdabet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 23:09:15