Service 三种网络暴露策略解析
是专门用于 MetalLB(一个 Kubernetes 的裸金属负载均衡器实现)的配置,用来指定 LoadBalancer 类型 Service 使用的 IP 地址池。如果想要通过本地web来访问k8s平台上的服务,需要把service的type设置成LoadBalancer,以下示例中的注解。云环境生产 → `LoadBalancer` + `Ingress`内部微服务 → `ClusterIP
·
|
特性 |
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)
更多推荐

所有评论(0)