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

如何在单个kind Kubernetes集群中部署两个ingress-nginx控制器

解决方案

1. 是否需要将第二个控制器Pod调度到不同节点?

是的,这是解决端口冲突的直接有效方式,需要调整控制器的调度规则适配:

  • 若控制器以DaemonSet部署:修改其nodeSelector或affinity配置,给目标节点打专属标签后,让第二个控制器仅调度到未运行第一个控制器的节点。
  • 若控制器以Deployment部署:添加podAntiAffinity规则,强制两个控制器Pod不被调度到同一节点,示例配置如下:
    affinity:
      podAntiAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
            - key: app.kubernetes.io/name
              operator: In
              values:
              - ingress-nginx
          topologyKey: kubernetes.io/hostname
    
    配置后Kubernetes会自动将第二个控制器Pod调度到空闲节点,规避端口占用问题。

2. Kind能否将多个节点的相同端口映射到宿主机?

不能。宿主机的TCP/UDP端口是全局唯一的,无法同时被多个Kind节点(本质是Docker容器)占用同一个宿主机端口。因此两个ingress控制器若都使用默认的80/443 NodePort,必然会触发端口映射冲突。

替代方案

方案A:为第二个控制器配置自定义NodePort

修改第二个ingress控制器的Service资源,指定非默认的NodePort端口,比如30080(对应宿主机8080)和30443(对应宿主机8443):

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx-controller-2
  namespace: your-second-namespace
spec:
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: 80
      nodePort: 30080
    - name: https
      port: 443
      targetPort: 443
      nodePort: 30443
  selector:
    app.kubernetes.io/name: ingress-nginx-2

同时在创建Kind集群的配置文件kind-config.yaml中添加对应端口映射:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
  extraPortMappings:
  - containerPort: 30080
    hostPort: 8080
    listenAddress: "0.0.0.0"
    protocol: TCP
  - containerPort: 30443
    hostPort: 8443
    listenAddress: "0.0.0.0"
    protocol: TCP

完成后访问宿主机的8080/8443即可转发到第二个ingress控制器。

方案B:用IngressClass区分控制器(推荐)

如果不需要独立端口,仅需通过域名区分两个应用,可以复用同一套ingress控制器资源:为两个应用的Ingress配置不同域名,或者为第二个控制器配置专属IngressClass,让不同Ingress资源绑定对应控制器。这种方式无需额外端口映射,从根源避免冲突。

示例专属IngressClass配置:

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: nginx-2
spec:
  controller: k8s.io/ingress-nginx-2

第二个应用的Ingress资源只需指定ingressClassName: nginx-2即可绑定到对应控制器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:05:25