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

如何通过Ubuntu宿主机IP暴露虚拟机上运行的Kind Kubernetes集群

原有方案的问题

你当前用iptables DNAT的方式暴露服务存在两个核心缺陷,也是Websocket连接失败的主要原因:

  • 内核默认禁止外部流量路由到127.0.0.0/8环回网段,net.ipv4.conf.all.route_localnet参数默认值为0,短连接的REST请求可能因超时快未显现问题,但长连接的Websocket会被内核的路由规则拦截或因连接跟踪超时断开
  • 缺少对应的SNAT规则,流量转发到127.0.0.1后回包源地址为环回地址,返回客户端时会被丢弃,直接导致Websocket握手失败

手写iptables规则本身确实稳定性差,后续还可能出现连接跟踪表溢出、规则被系统其他服务覆盖、重启失效等问题,不建议生产或长期测试环境使用。

更优的内网暴露方案

推荐两种比DNAT更稳定的方案,均原生支持Websocket长连接:

方案1:修改Kind集群端口映射配置(优先推荐)

你之前配置Ingress时,Kind默认会把Ingress的80/443端口绑定到宿主机的127.0.0.1地址,只需修改集群配置把监听地址改为ens160的IP即可,无需额外配置转发规则。
修改后的Kind集群配置示例如下:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  kubeadmConfigPatches:
  - |
    kind: InitConfiguration
    nodeRegistration:
      kubeletExtraArgs:
        node-labels: "ingress-ready=true"
  extraPortMappings:
  - containerPort: 80
    hostPort: 80
    listenAddress: "192.168.xx.xx" # 替换为你的ens160网卡实际IP
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    listenAddress: "192.168.xx.xx" # 替换为你的ens160网卡实际IP
    protocol: TCP

用上述配置重建Kind集群后,Ingress会直接监听在ens160网卡的80/443端口,内网机器直接访问该IP即可,基于Docker原生的端口映射实现,稳定性高,无额外性能损耗。

方案2:宿主机部署Nginx反向代理(无需重建集群)

如果不想重建现有集群,可以在Ubuntu宿主机安装Nginx,监听ens160的80/443端口,反向代理到127.0.0.1的对应端口,同时配置Websocket支持即可。
Nginx配置示例:

server {
    listen 192.168.xx.xx:80; # 替换为ens160的实际IP
    server_name _;

    location / {
        proxy_pass http://127.0.0.1:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # Websocket支持配置
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400; # 长连接超时设为1天,避免Websocket意外断开
    }
}
# 443端口配置逻辑一致,补充对应SSL证书配置即可

该方案还可额外配置访问控制、请求日志、限流等能力,适合需要额外管控的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 21:39:02