当前位置: 首页 > news >正文

【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 证书等)。

相关文章:

  • 做网站的公司重庆怎样在网上做宣传
  • wordpress建立数据库错误优化疫情二十条措施
  • 互联网兼职做网站维护百度推广登陆后台
  • 安徽建设工程有限公司官网广东知名seo推广多少钱
  • 做网站会什么亚马逊关键词工具哪个最准
  • 真人性做爰video网站seo优化报告
  • MySQL为什么默认引擎是InnoDB?
  • numpy常用函数
  • 【基础篇-消息队列】——如何通过网络传输结构化的数据( 序列化与反序列化)
  • 0629-
  • 《从0到1:C/C++音视频开发自学完全指南》
  • NPM 依赖包版本号 `~` 和 `^` 的区别及最佳实践
  • 定位坐标系深度研究报告
  • Python爬取TMDB电影数据:从登录到数据存储的全过程
  • “组件协作”模式之策略模式
  • 【Python】图像+点云 结合显示
  • Part 0:射影几何,变换与估计-第二章:2D射影几何与变换(下)
  • 【看到哪里写到哪里】算闰年的(year 3) == 0
  • Selenium 二次封装通用页面基类 BasePage —— Python 实践
  • Windows下安装zookeeper
  • ros (二) 使用消息传递点云+rviz显示
  • web目录扫描-御剑
  • Redis跳表(skiplist)底层原理浅析
  • 使用亮数据网页抓取API自动获取Tiktok数据
  • matlab机器人工具箱(Robotics Toolbox)安装及使用
  • 【EDA软件】【应用功能子模块网表提供和加载编译方法】