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

如何通过公司内网访问本地Centos服务器上的Kubernetes应用?

解决k3d集群应用仅公司内网访问的问题

问题根源

你执行kubectl port-forward时,命令默认仅绑定服务器的127.0.0.1网卡,仅服务器本地能访问,内网其他机器无法通过服务器私有IP建立连接。

临时解决方案(快速验证)

修改port-forward命令,让它绑定服务器的所有网卡,允许内网机器访问:

sudo kubectl -n test port-forward --address 0.0.0.0 service/api-gateway-nginx 8080:80

执行后,公司内网机器即可通过服务器私有IP:8080访问应用。该方案适合临时测试,断开SSH会话后端口转发会失效。

加固访问权限(仅允许内网网段)

为避免服务器端口被无关访问,可通过防火墙限制仅公司内网网段能访问8080端口:

  • 若服务器使用ufw防火墙:
    # 替换为你的公司内网网段,例如192.168.5.0/24
    sudo ufw allow from 192.168.5.0/24 to any port 8080
    
  • 若服务器使用firewalld防火墙:
    sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.5.0/24" port port="8080" protocol="tcp" accept' --permanent
    sudo firewall-cmd --reload
    

持久化解决方案(长期运行)

kubectl port-forward是临时方案,若要长期稳定提供内网访问,推荐以下两种方式:

方式一:创建k3d集群时直接映射端口

删除现有集群后,重新创建时指定端口映射到服务器的所有网卡:

k3d cluster delete test
# 将服务器的8080端口映射到集群负载均衡器的80端口
k3d cluster create test --port 0.0.0.0:8080:80@loadbalancer

重新安装helm应用后,内网机器直接通过服务器私有IP:8080访问,无需再执行port-forward。

方式二:将Service改为NodePort类型

修改现有Service的类型为NodePort,让k3d自动分配对外端口:

# 修改Service类型
kubectl -n test patch service/api-gateway-nginx -p '{"spec":{"type":"NodePort"}}'
# 查看分配的NodePort端口(通常为30000-32767之间的数值)
kubectl -n test get service api-gateway-nginx

在防火墙开放该NodePort端口的内网访问权限后,内网机器通过服务器私有IP:分配的NodePort访问应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:07:29