对内对外怎么选入口
把集群内的访问方式放在一起比较,选型会清晰很多:集群内部服务互访用固定虚拟地址;临时外部测试用节点端口;云上生产对外入口用负载均衡;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 对外用负载均衡或受控的节点端口,调试只在小范围内使用端口转发。
同一个服务同时开多种对外入口,会让流量来源、证书与访问控制的管理变得混乱。对外路径应收敛到少数标准方式,并纳入定期盘点。