首页/云/Kubernetes 速查/对外/对内访问方式选型对照
网络与服务55 条

对外/对内访问方式选型对照

把 ClusterIP、NodePort、LoadBalancer、Ingress、port-forward 放在一张表里对照:按「谁访问、什么协议、运维成本」选型。

Kubernetes 速查云更新于 2026-10-13

对内对外怎么选入口

把集群内的访问方式放在一起比较,选型会清晰很多:集群内部服务互访用固定虚拟地址;临时外部测试用节点端口;云上生产对外入口用负载均衡;HTTP 与 HTTPS 多站点统一走入口对象;本机调试单个服务用端口转发。判断依据是访问方在哪、用什么协议、以及愿意承担多少运维成本。

基本信息

适用平台Kubernetes 1.20+,云上与自建略有差异
内网互访固定虚拟地址,集群外不可达
对外入口负载均衡或入口对象
临时调试端口转发隧道
成本关注对外入口按量计费,长期闲置是常见浪费

典型使用场景

  • 服务之间调用:用集群内固定地址,无需对外暴露
  • 临时给外部联调:节点端口最省事,但要限定来源
  • 生产对外发布 HTTP 服务:统一走入口对象便于证书与路由管理
  • 非 HTTP 协议对外:负载均衡或受控的节点端口
  • 开发调试:本机端口转发,只映射单个服务

方式对照

方式适用场景注意点
集群内固定地址集群内部服务互访对集群外不可达
节点端口临时外部测试、简单暴露端口管理成本高,建议仅内网
负载均衡云上生产对外入口按量计费,依赖云控制器
入口对象HTTP 与 HTTPS 多站点入口需要控制器,非 HTTP 场景不适用
端口转发本机调试单个服务临时隧道,不做生产入口

快速盘点入口

快速盘点入口
kubectl get svc -A --field-selector spec.type=LoadBalancer   # 按量计费的对外入口
kubectl get svc -A --field-selector spec.type=NodePort        # 节点端口暴露的服务
kubectl get ingress -A                                        # 入口对象与域名
kubectl get svc -A -o wide | head -20                         # 整体分布
选型原则很简单:内部用集群内地址,统一 HTTP 入口用入口对象,非 HTTP 对外用负载均衡或受控的节点端口,调试只在小范围内使用端口转发。
同一个服务同时开多种对外入口,会让流量来源、证书与访问控制的管理变得混乱。对外路径应收敛到少数标准方式,并纳入定期盘点。

易错点

  • 一个服务同时开多种入口:流量来源与证书管理混乱,问题定位困难
  • 测试环境长期挂着对外负载均衡:费用持续产生却没有人使用
  • 用端口转发承载生产访问:链路依赖单台机器的会话,进程一断服务即不可用
  • 把入口对象用在非 HTTP 协议上:入口组件按 HTTP 语义处理,无法完成转发

数据来源与参考

  • Kubernetes 官方文档 · Service / Ingress
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌