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

裸金属部署K3S访问内部服务资源的最简方案咨询

裸金属K3S免单服务端口转发访问内部服务方案

绝对最简方案(零额外组件部署,5分钟配置完成)

K3S默认预装的Traefik Ingress控制器本身已经以hostNetwork模式的DaemonSet运行在所有集群节点上,直接监听节点的80、443端口,完全不需要云负载均衡支持,也不用额外部署任何组件,直接用就可以。
操作步骤非常简单:

  • 为所有需要访问的内部服务(Loki、Traefik Dashboard、Grafana等)创建标准Ingress资源,为每个服务分配一个独立的内网域名,比如loki.internal、traefik.internal,Ingress直接使用默认的Traefik IngressClass即可。
  • 在你的办公终端或者内网DNS服务上,把上述自定义的内网域名解析到K3S集群任意一个(或多个)节点的内网IP地址:单节点测试直接改本地hosts文件,多用户用就加内网DNS的A记录。
  • 如果需要限制访问来源,直接在Traefik上配置IP白名单中间件,绑定到对应Ingress上,只放通信任的内网IP段即可,无需额外搭VPN。

以下是Traefik Dashboard的Ingress配置示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: traefik-admin
  namespace: kube-system
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
  rules:
  - host: traefik.internal
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: traefik
            port:
              number: 9000

注意:裸金属环境下Traefik对应的LoadBalancer类型Service会一直显示Pending状态,这是正常现象,不影响80/443端口的流量转发,因为DaemonSet已经直接绑定了宿主机端口,不需要Service额外转发。

若需要LoadBalancer能力的选型建议

如果你有场景必须使用LoadBalancer类型的Service,按轻量化优先级选:

  • 首选K3S官方内置的Klipper LB:本身就是为裸金属/边缘场景设计,默认已经集成在K3S里,不需要额外部署,会自动为LoadBalancer类型Service分配节点端口、配置宿主机路由,直接访问节点IP即可对应到服务,资源占用极低。
  • 次选MetalLB:如果需要独立的LoadBalancer IP池,选MetalLB的二层模式即可,不需要依赖外部硬件交换机支持,在内网段划一段空闲IP做地址池就能用,配置也很简单,只是资源占用比Klipper高,非必要不选。

不推荐的冗余方案

不建议纯内网访问场景下专门部署绑定VPN接口的第二套Ingress控制器,只有当你需要在外网非内网环境安全访问内部服务时,再考虑这类方案,否则只会增加额外的维护成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:27:35