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

Kubernetes:如何让Rancher Ingress负载均衡器监听不同IP地址(非端口)

解决方案:在Rancher管理的单节点集群中通过eth1(办公VLAN)暴露服务

针对你的双网卡RancherOS主机场景——eth0绑定管理VLAN仅用于Rancher Server,eth1绑定办公VLAN需要对外暴露服务,我整理了一套实操步骤来实现需求:

1. 调整Ingress Controller的网络绑定

默认Kubernetes Ingress Controller(比如常用的NGINX Ingress)会监听主机所有网卡的流量,我们需要把它绑定到eth1的IP(10.10.0.231)上,确保办公VLAN的流量只走这块网卡:

方式一:通过Rancher UI可视化修改

  • 登录你的Rancher Server后台(10.30.0.231:8080),进入目标集群
  • 导航到Service & Ingress > Services,找到Ingress Controller对应的Service(通常命名为nginx-ingress-controller,位于kube-system命名空间)
  • 编辑该Service,在External IPs字段填入10.10.0.231,保存修改即可完成绑定

方式二:通过YAML配置命令行修改

如果习惯用命令行操作,创建或修改Ingress Controller的Service配置文件:

apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress-controller
  namespace: kube-system
spec:
  type: NodePort
  externalIPs:
  - 10.10.0.231  # 指定eth1的IP地址
  ports:
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP
  - name: https
    port: 443
    targetPort: 443
    protocol: TCP
  selector:
    app: nginx-ingress  # 匹配Ingress Controller Pod的标签,根据实际情况调整

执行命令应用配置:
kubectl apply -f ingress-controller-service.yaml -n kube-system

2. 创建Ingress资源暴露目标服务

假设你要暴露的内部服务名为office-app,运行在80端口,创建如下Ingress配置文件:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: office-vlan-expose
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"  # 不需要HTTPS的话添加这条
spec:
  rules:
  # 可以用自定义域名,也可以直接用eth1的IP访问
  - host: office-app.yourcompany.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: office-app
            port:
              number: 80
  # 如果直接用IP访问,可替换成下面的规则
  # - http:
  #     paths:
  #     - path: /
  #       pathType: Prefix
  #       backend:
  #         service:
  #           name: office-app
  #           port:
  #             number: 80

执行命令应用配置:
kubectl apply -f office-ingress.yaml

3. 验证配置有效性

  • 从办公VLAN内的任意机器访问http://10.10.0.231(或你设置的自定义域名),确认能正常访问目标服务
  • 查看Ingress Controller的日志,确认流量是通过eth1进入的:
    kubectl logs -n kube-system <nginx-ingress-pod-name>

额外注意事项

  • 确保RancherOS主机的防火墙规则允许eth1网卡的80/443端口流量(如果开启了防火墙)
  • 如果是Rancher自动部署的集群,默认已经安装了Ingress Controller,只需要调整Service的externalIPs即可
  • 若需要暴露多个服务,可以在同一个Ingress资源中添加多组rules,或者创建多个独立的Ingress资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:24:26