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

Rancher 1.6非Server主机端口转发异常,请求均跳转至Server主机

解决Rancher 1.6集群非Server节点端口转发到Host1的问题

问题根源

你的问题是Rancher 1.6的负载均衡服务配置错误,导致所有非Server节点(Host2/3/4)的iptables生成了针对Host1 IP的DNAT规则,把80/443请求强制转发到Host1上的Nginx容器。正常集群的规则用0.0.0.0/0作为目标地址,意味着请求会被转发到本地节点的容器,这是负载均衡监听所有主机地址的正确配置。

解决方案

1. 修正Rancher负载均衡服务配置

  • 登录Rancher UI,找到负责Nginx转发的负载均衡服务
  • 进入服务配置页面,检查端口映射:
    • 确保监听IP设置为0.0.0.0(绑定所有主机地址),而非Host1的IP5.67.218.11
    • 确认目标服务选择的是集群中所有节点部署的Nginx服务,而非仅Host1上的单个容器。如果是通过Rancher Service部署的Nginx,直接选择该Service即可,Rancher会自动路由到本地节点的容器
  • 保存配置,等待Rancher更新所有节点的iptables规则

2. 检查容器端口发布模式

如果未使用Rancher负载均衡,直接发布Nginx容器端口:

  • 确保容器的hostPort绑定到0.0.0.0,而非指定Host1的IP
  • 在Rancher容器部署配置中,端口格式应为80:80(默认绑定所有地址),而非5.67.218.11:80:80

3. 重置节点的iptables规则(配置修改后未生效时)

若修改配置后规则未自动更新,手动清理错误规则并重启rancher-agent:

# 删除针对Host1 IP的错误DNAT规则
iptables -t nat -D PREROUTING -d 5.67.218.11/32 -p tcp --dport 80 -j DNAT --to-destination 10.42.204.73:80
iptables -t nat -D PREROUTING -d 5.67.218.11/32 -p tcp --dport 443 -j DNAT --to-destination 10.42.204.73:443

# 重启rancher-agent让Rancher重新生成正确规则
docker restart rancher-agent

4. 验证Nginx容器网络配置

在Host2/3/4上执行docker inspect <nginx-container-id>,确认HostConfig.PortBindings中80/tcp和443/tcp的HostIp是0.0.0.0,确保容器端口绑定到本地主机的所有地址。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 22:54:50