Kubernetes 中的 Service 类型及选择策略如下:
-
Service 类型
- ClusterIP(默认):为集群内部提供访问,分配虚拟IP,仅限集群内通信。
- NodePort:在集群每个节点上开放固定端口(30000-32767),通过
节点IP:端口
允许外部访问。 - LoadBalancer:依赖云厂商的负载均衡器(如AWS ELB、GCP LB),自动分配外部IP,提供公网访问。
- ExternalName:通过DNS CNAME记录映射到外部服务(如数据库URL),不代理流量。
-
选择策略
- 内部微服务调用:使用 ClusterIP,例如数据库、后端API。
- 临时外部测试:用 NodePort(配合防火墙规则),避免依赖云平台。
- 生产环境外部暴露:优先 LoadBalancer(需云支持),自动处理流量分发。
- 混合云/本地集群:NodePort + Ingress(如Nginx)组合,实现灵活路由。
- 集成外部服务:用 ExternalName 解耦配置,例如引用第三方API。
-
常用解决方案示例(LoadBalancer)
- 步骤:
- 创建 Deployment 定义应用副本。
- 编写 Service 配置文件,指定
type: LoadBalancer
及目标端口。 - 执行
kubectl apply -f service.yaml
。 - 等待云平台分配外部IP,通过
kubectl get svc
查看IP和端口。 - 配置安全组允许流量,通过
http://<EXTERNAL-IP>:<PORT>
访问。
- 注意点:检查云厂商配额,避免端口冲突;监控LB费用,避免资源浪费。
- 步骤: