Kubernetes-03:Service

发布于:2025-08-15 ⋅ 阅读:(14) ⋅ 点赞:(0)

1.ClusterIP类型

        ClusterIP 是 Kubernetes 默认的 Service 类型,在集群内部创建一个虚拟 IP(VIP)作为统一访问入口,仅允许集群内 Pod 互相访问。

  1. 通过 kube-proxy 监听 API Server 的 Service 变化

  2. 配置 iptables/IPVS 规则,将发往 ClusterIP 的请求负载均衡到后端 Pod

  3. 基于 Endpoints 对象动态关联健康 Pod

有以下作用:

·服务发现:Pod 可通过 Service 名称(如 my-svc.default.svc.cluster.local)访问后端。

·负载均衡:自动将流量分发到多个 Pod。

·解耦:前端应用无需感知后端 Pod IP 变化。

2.NodePort类型

        在 ClusterIP 基础上,在每个节点上开放一个静态端口(默认范围 30000-32767),使外部流量可通过 节点IP:端口 访问服务。

3.Headless类型

        通过设置 clusterIP: None 创建无虚拟 IP 的 Service,直接返回后端 Pod IP 列表而非代理流量。

  1. DNS 查询返回所有 Pod 的 A 记录(如 pod-ip1, pod-ip2)

  2. 客户端自行选择 Pod 直连

  3. StatefulSet 的 Pod 会获得唯一 DNS 名称(如 web-0.nginx)

适用于以下情况:

·有状态服务:配合 StatefulSet 实现 Pod 级服务发现(如数据库主从)。

·自定义负载均衡:客户端直接控制流量分发。

·批处理系统:任务调度器直接通信 Worker Pod

4.LoadBalancer类型

        云厂商集成的外部负载均衡器,自动创建云平台的 LB(如 AWS ELB、GCP Cloud LB)并分配公网 IP。原理如下:

·向云平台API发起LB创建请求

·将节点配置为LB后端

·外部流量经 LB 分配到节点,再通过 NodePort 到 Pod

5.Ingress控制器

        HTTP/HTTPS 流量的七层网关,通过规则实现域名、路径路由到不同 Service(需配合 Ingress Controller 使用)。

  1. Ingress 资源:定义路由规则(如 host: example.com, path: /api)

  2. Ingress Controller(如 Nginx/ Traefik):监听规则变化并动态配置代理服务器

  3. 外部流量先到达 Controller,再按规则转发到后端 Service

核心功能对比表

Service类型 访问范围 网络层级 典型场景
ClusterIP 集群内部 L4 微服务间通信
NodePort 节点IP+端口 L4 开发测试环境暴露服务
Headless 集群内部 DNS直连 数据库集群/Pod 直连
LoadBalancer 公网 L4 云环境生产服务暴露
Ingress 公网/域名 L7 HTTP 路由管理和 TLS 终止


网站公告

今日签到

点亮在社区的每一天
去签到