欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 【kubernetes】--Service

【kubernetes】--Service

2025/6/26 10:53:44 来源:https://blog.csdn.net/2401_88076102/article/details/148907378  浏览:    关键词:【kubernetes】--Service

Service

  • Service 是 Kubernetes 中用于暴露 Pod 的核心抽象,提供稳定的访问方式。
  • ClusterIP(默认)适用于集群内通信,NodePort 适用于临时外部访问,LoadBalancer 适用于生产环境。
  • Ingress 补充 Service,提供更高级的 HTTP 路由能力。

Service 的核心功能

  1. 服务发现

    • 为动态变化的 Pod 提供固定的访问入口(DNS 名称或 ClusterIP)。
    • 客户端无需关心 Pod 的具体 IP 地址。
  2. 负载均衡

    • 自动将请求分发到后端的多个 Pod 上(默认使用轮询策略)。
  3. 稳定的网络访问

    • Pod 的 IP 是临时的(重启或调度后会变化),而 Service 的 IP(ClusterIP)或 DNS 名称是持久的。
  4. 支持多种访问模式

    • 支持 ClusterIP(集群内访问)、NodePort(节点端口暴露)、LoadBalancer(云厂商 LB)、ExternalName(外部服务映射)等类型。

Service 的类型

Kubernetes Service 主要有 4 种类型:

类型作用适用场景
ClusterIP(默认)分配一个集群内部 IP,只能在集群内访问内部服务通信,如微服务间调用
NodePort在每个节点上开放一个静态端口(30000-32767),外部可通过 <NodeIP>:<NodePort> 访问开发测试、临时外部访问
LoadBalancer由云厂商(AWS/GCP/Azure)提供外部负载均衡器,分配公网 IP生产环境,对外暴露服务
ExternalName通过 CNAME 记录映射到外部 DNS(如数据库、第三方 API)访问集群外服务

Service 的工作原理

  1. 选择 Pod:通过 selector 匹配一组 Pod(如 app: nginx)。
  2. 分配 IP 和 DNS
    • ClusterIP:自动分配一个虚拟 IP(VIP),只能在集群内访问。
    • NodePort/LoadBalancer:额外分配外部访问方式。
  3. 代理流量
    • 使用 kube-proxy 维护 IPVS/iptables 规则,将请求转发到后端 Pod。

Service 示例

1. ClusterIP 示例(默认)

apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: nginx  # 选择所有带有 `app: nginx` 标签的 Podports:- protocol: TCPport: 80       # Service 监听的端口targetPort: 80  # 转发到 Pod 的端口
  • 集群内访问方式:
    • DNS:my-service.<namespace>.svc.cluster.local
    • 或直接使用 http://my-service:80

2. NodePort 示例

apiVersion: v1
kind: Service
metadata:name: my-nodeport-service
spec:type: NodePortselector:app: nginxports:- port: 80targetPort: 80nodePort: 30007  # 手动指定(默认范围 30000-32767)
  • 外部访问方式:
    • http://<NodeIP>:30007

3. LoadBalancer 示例(云厂商适用)

apiVersion: v1
kind: Service
metadata:name: my-loadbalancer-service
spec:type: LoadBalancerselector:app: nginxports:- port: 80targetPort: 80
  • 云厂商(如 AWS/GCP)会自动分配一个外部负载均衡器 IP。

Service vs Ingress

特性ServiceIngress
作用提供 L4(TCP/UDP)负载均衡提供 L7(HTTP/HTTPS)路由
协议支持 TCP/UDP支持 HTTP/HTTPS/GRPC
功能负载均衡、服务发现基于路径/域名的路由、TLS 终止
依赖kube-proxy需要 Ingress Controller(如 Nginx、Traefik)
  • Service 适用于内部服务通信或简单的外部访问(NodePort/LoadBalancer)。
  • Ingress 适用于 HTTP 流量管理(如多域名、路径路由、SSL 证书等)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词