当前位置: 首页 > 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.lqws.cn/news/524575.html

相关文章:

  • C# LINQ语法
  • Redis—持久化
  • 使用亮数据网页抓取API自动获取Tiktok数据
  • C++包管理工具:conan2使用教程
  • 网络安全技术期末考试
  • 专题:2025医疗AI应用研究报告|附200+份报告PDF汇总下载
  • 多个 Job 并发运行时共享配置文件导致上下文污染,固化 Jenkins Job 上下文
  • QUdpScoket 组播实现及其中的踩坑点记录
  • 【DevTools浏览器开发者工具反调试之无限Debugger跳过】
  • 如何防止自己的电脑被控制?开启二次验证保护教程
  • 强化学习理论基础:从Q-learning到PPO的算法演进(1)
  • [日志收集]
  • 刷题 | 牛客 - js中等题-下 (更ing)45/54知识点解答
  • 深度学习实战112-基于大模型Qwen+RAG+推荐算法的作业互评管理系统设计与实现
  • Java期末复习题(二)
  • 计算机网络-----详解HTTPS协议
  • 日本生活:日语语言学校-日语作文-沟通无国界(5)-题目:我的一天
  • C# 中 string.Equals 以及 StringComparison 枚举的不同选项
  • SQL进阶:CASE表达式
  • 数组基础知识
  • IBMS 智能化系统:让建筑提前进入 AIoT 智慧纪元​
  • Linux基本指令篇 —— mv指令
  • 时序数据库 TDengine 助力华锐 D5 平台实现“三连降”:查询快了,机器少了,成本也低了
  • 以太坊执行客户端和共识客户端各自的作用及意义
  • java 对接ETH(以太坊) 交易相关资料
  • 区间求最值问题高效解决方法
  • Linux下使用docker nginx部署vue前端项目工程
  • vue2 使用el-form中el-form-item单独绑定rules不生效问题
  • IoT/HCIP实验-5/基于NB-IoT的智慧农业实验(平台侧开发+端侧编码+基础调试分析)
  • LOOP如何让长周期交互LLM代理在复杂环境中实现突破?