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

自建Kubernetes(microk8s)配置Ingress监听指定网络接口方案咨询

microk8s nginx-ingress指定网卡监听部署方案

不需要切换为外部HAProxy或Nginx方案,nginx-ingress可完全满足你的需求,且所有资源可统一托管在自定义命名空间,方便生命周期管理。

1 前置操作:禁用microk8s默认ingress控制器

microk8s自带的ingress控制器权限受限、配置不灵活,先执行命令禁用:
microk8s disable ingress

2 自定义命名空间部署独立nginx-ingress控制器

2.1 创建专属命名空间

你可以自定义命名空间名称,示例为my-ingress-ns:
kubectl create namespace my-ingress-ns

2.2 部署控制器并指定初始监听网卡

通过helm部署时添加对应参数,初始仅监听eth0对应IP 192.168.0.1:

helm upgrade --install ingress-nginx ./path/to/ingress-nginx-chart \
  --namespace my-ingress-ns \
  --set controller.hostNetwork=true \
  --set controller.extraArgs.bind-address=192.168.0.1 \
  --set controller.watchNamespace="*"

参数说明:

  • controller.hostNetwork=true:控制器直接使用宿主机网络栈,可直接监听宿主机网卡端口
  • controller.extraArgs.bind-address:指定监听的网卡IP,未列入的IP请求不会被接收,直接返回超时
  • controller.watchNamespace:指定控制器监听的命名空间,可填写你的业务命名空间限制监听范围,填*表示监听所有命名空间的Ingress资源

所有控制器相关资源都在my-ingress-ns下,需清理时可直接执行kubectl delete ns my-ingress-ns即可完全移除。

3 配置Ingress转发规则

编写Ingress资源配置实现你的路径转发逻辑:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: domain-ingress
  namespace: 你的业务服务所在命名空间
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - domain.com
    secretName: domain-tls # 提前创建好的域名TLS证书Secret
  rules:
  - host: domain.com
    http:
      paths:
      - path: /frontend
        pathType: Prefix
        backend:
          service:
            name: service-frontend
            port:
              number: 服务端口
      - path: /backend
        pathType: Prefix
        backend:
          service:
            name: service-backend
            port:
              number: 服务端口

配置提交后即可实现eth0接口的请求转发逻辑,eth1接口的请求未被监听,直接返回超时,符合你的初始要求。

4 后续开启eth1接口监听操作

仅需更新控制器的bind-address参数,添加eth1对应IP 88.88.88.88即可,无需修改其他转发规则:

helm upgrade ingress-nginx ./path/to/ingress-nginx-chart \
  --namespace my-ingress-ns \
  --set controller.extraArgs.bind-address=192.168.0.1,88.88.88.88

更新完成后两个网卡的请求转发逻辑完全一致。

5 负载均衡实现

nginx-ingress控制器默认支持后端服务多实例负载均衡,你仅需要将service-frontend、service-backend对应的Deployment配置为多副本即可,无需额外配置。

异常排查

如果自定义Ingress资源不生效,检查两个配置项:

  • 确保Ingress资源的ingressClassName字段和你部署的nginx-ingress控制器的ingressClass名称一致,默认值为nginx
  • 确保控制器watchNamespace参数包含了你的业务资源所在的命名空间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:12:00