Haproxy Ingress Controller DaemonSet部署后节点IP 80端口访问被拒如何解决
你遇到的访问节点IP 80端口被拒绝的问题,核心是Haproxy Ingress Controller的DaemonSet默认没有将端口映射到节点宿主机网络,仅通过LoadBalancer虚拟IP暴露服务,具体需要检查以下配置项:
检查是否开启hostNetwork配置
开启hostNetwork后Ingress Pod会直接共享节点的网络命名空间,Pod监听的80端口会直接绑定到节点的80端口。你可以执行命令kubectl edit daemonset <haproxy-ingress-controller名称> -n <haproxy安装的命名空间>,查看spec.template.spec下是否配置了hostNetwork: true,没有的话添加该配置即可生效。
如果你通过Helm安装,可以执行升级命令直接配置:helm upgrade haproxy-ingress haproxytech/haproxy-ingress \ --set controller.hostNetwork=true \ --set controller.kind=DaemonSet检查是否配置hostPort端口映射
如果你不想开启hostNetwork,也可以通过hostPort将Ingress Pod的端口映射到节点对应端口。检查DaemonSet的容器端口配置,确认http端口已配置hostPort: 80:ports: - name: http containerPort: 80 hostPort: 80 protocol: TCPHelm安装对应的配置参数为
--set controller.daemonset.useHostPort=true,controller.containerPorts.http=80。检查节点本地端口与防火墙规则
完成上述配置后如果仍无法访问,登录节点执行ss -tulnp | grep :80确认是否有进程监听80端口,同时检查节点iptables规则、云服务商安全组是否放开了80端口的入站请求,避免端口被拦截。
内容的提问来源于stack exchange,提问作者zozo6015

