特性

ClusterIP

NodePort

LoadBalancer

暴露范围

集群内部

节点 IP + 端口

外部负载均衡器 IP

依赖云厂商

端口类型

虚拟 IP + 端口

节点物理端口(30000+)

负载均衡器端口

适用场景

内部服务通信

开发测试/非云环境

云环境生产部署

访问复杂度

低(仅集群内)

中(需知节点 IP)

低(固定域名/IP)

成本

高(云厂商收费)

选型建议

  • 开发测试 → `NodePort`
  • 云环境生产 → `LoadBalancer` + `Ingress`
  • 内部微服务 → `ClusterIP`

实战示例:LoadBalancer 配置

如果想要通过本地web来访问k8s平台上的服务,需要把service的type设置成LoadBalancer,以下示例中的注解 metallb.universe.tf/address-pool: "service-pool" 是专门用于 MetalLB(一个 Kubernetes 的裸金属负载均衡器实现)的配置,用来指定 LoadBalancer 类型 Service 使用的 IP 地址池。

apiVersion: v1
kind: Service
metadata:
  name: my-service
  annotations:
    metallb.universe.tf/address-pool: "service-pool"  # 关键注解
spec:
  type: LoadBalancer
  ports:
    - port: 80         # 负载均衡器监听的端口
      targetPort: 8080 # 容器端口
  selector:
    app: my-app
注意事项:云厂商可能需要额外的注解(如 AWS 的 service.beta.kubernetes.io/aws-load-balancer-type)
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐