Kubernetes 中的服务暴露方式及适用场景如下:
-
ClusterIP
- 默认类型,分配集群内部IP,仅限集群内访问。
- 适用场景:内部服务通信(如微服务间调用)。
-
NodePort
- 在集群所有节点的指定端口(30000-32767)暴露服务,通过
<节点IP>:<端口>
访问。 - 适用场景:临时外部访问(如开发测试)。
- 在集群所有节点的指定端口(30000-32767)暴露服务,通过
-
LoadBalancer
- 云平台自动创建外部负载均衡器,分配公网IP。
- 适用场景:生产环境(需云服务商支持,如AWS、GCP)。
-
ExternalName
- 映射服务到外部DNS名称(CNAME记录),无代理或端口暴露。
- 适用场景:集成外部服务(如云数据库)。
-
Ingress
- 通过HTTP/HTTPS路由规则(域名/路径)暴露服务,需安装Ingress控制器(如Nginx)。
- 适用场景:复杂路由、TLS终止、多服务统一入口。
操作建议:
- 内部服务:优先ClusterIP。
- 生产公网暴露:结合LoadBalancer与Ingress。
- 裸机环境:使用MetalLB或NodePort+外部负载均衡。