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

Kind集群中Helm安装ingress-nginx无法监听80端口求助

KinD集群ingress-nginx主机端口转发补丁总结&Helm适配方案

核心补丁内容(来自KinD官方ingress-nginx manifest)

官方为KinD定制的manifest主要做了3处关键修改,让主机80/443端口直接映射到ingress controller:

  • Deployment容器端口绑定:给ingress-nginx controller的容器添加hostPort,将容器的80、443端口直接绑定到KinD节点(运行在主机上的容器)的对应端口,这样主机端口流量能直接传到controller容器。

    spec:
      template:
        spec:
          containers:
            - name: controller
              ports:
                - containerPort: 80
                  hostPort: 80
                  protocol: TCP
                - containerPort: 443
                  hostPort: 443
                  protocol: TCP
    
  • 启用主机网络与DNS适配:开启hostNetwork: true让Pod使用节点的网络命名空间,确保hostPort绑定生效;同时设置dnsPolicy: ClusterFirstWithHostNet,保证Pod在主机网络模式下仍能正常使用集群DNS服务。

    spec:
      template:
        spec:
          hostNetwork: true
          dnsPolicy: ClusterFirstWithHostNet
    
  • Service类型配置:将Service设为LoadBalancer(KinD会自动降级为NodePort),同时明确端口映射关系,避免随机NodePort导致的访问问题(核心生效还是靠前面的hostPort)。

    spec:
      type: LoadBalancer
      ports:
        - name: http
          port: 80
          targetPort: 80
        - name: https
          port: 443
          targetPort: 443
    

Helm部署的适配方法

你可以通过Helm的自定义values或者命令行参数,把上述补丁配置应用到Helm部署的ingress-nginx:

方式1:自定义values.yaml

创建values-kind.yaml文件:

controller:
  hostNetwork: true
  dnsPolicy: ClusterFirstWithHostNet
  hostPort:
    enabled: true
    http: 80
    https: 443
  service:
    type: LoadBalancer
    ports:
      http: 80
      https: 443

执行安装/升级命令:

helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx \
  -f values-kind.yaml \
  --namespace ingress-nginx --create-namespace

方式2:命令行直接传参

如果不想写配置文件,直接用命令行参数覆盖默认值:

helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx \
  --namespace ingress-nginx --create-namespace \
  --set controller.hostNetwork=true \
  --set controller.dnsPolicy=ClusterFirstWithHostNet \
  --set controller.hostPort.enabled=true \
  --set controller.hostPort.http=80 \
  --set controller.hostPort.https=443 \
  --set controller.service.type=LoadBalancer

配置完成后,ingress-nginx就能直接监听主机的80/443端口,你无需端口转发即可通过prometheus.example.com这类域名访问集群内服务的UI。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:20:40