当前位置: 首页 > 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 证书等)。
http://www.lryc.cn/news/575318.html

相关文章:

  • 深入理解提示词工程:原理、分类与实战应用
  • 基于 opencv+yolov8+easyocr的车牌追踪识别
  • linux-修改文件命令(补充)
  • Windows 安装 Redis8.0.2
  • 多传感器标定简介
  • day042-负载均衡与web集群搭建
  • python3虚拟机线程切换过程
  • 定位坐标系深度研究报告
  • LangGraph--基础学习(Human-in-the-loop 人工参与深入学习2)
  • 达梦数据库安装
  • 深入理解Redis
  • 【深度学习新浪潮】什么是上下文工程?
  • Introduction to Software Engineering(TE)
  • Linux 怎么恢复sshd.service
  • 【C++】std::function是什么
  • 【网络实验】-配置用户登录
  • 《高等数学》(同济大学·第7版)第九章 多元函数微分法及其应用第一节多元函数的基本概念
  • ARM内核之CMSIS
  • 《从0到1:C/C++音视频开发自学完全指南》
  • 超级好用的小软件:geek,卸载软件,2m大小
  • HarmonyOS 5分布式数据库有哪些性能指标?
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | BackgroundSlider(背景滑块)
  • 【Docker基础】Docker容器管理:docker pause、stop、kill区别
  • Windows下安装zookeeper
  • 【nRF52832】【环境搭建 1】【ubuntu下搭建nRF52832开发环境】
  • 一篇文章了解XML
  • 20250625解决在Ubuntu20.04.6LTS下编译RK3588的Android14出现cfg80211.ko的overriding问题
  • 【DataWhale组队学习】AI办公实践与应用-数据分析
  • 《仿盒马》app开发技术分享-- 待发货兑换订单列表(76)
  • 使用EasyExcel处理动态表头数据导入