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

Kubernetes Service 详解

Kubernetes Service 详解

一、Service 基本概念

Service 是 Kubernetes 中定义一组 Pod 访问策略的抽象资源,它为 Pod 提供稳定的网络端点,主要解决以下问题:

  • 服务发现:动态变化的 Pod IP 访问问题
  • 负载均衡:流量在多 Pod 间自动分配
  • 解耦:应用与具体 Pod 实例的解耦

二、Service 核心特性

特性说明
稳定虚拟 IP生命周期独立于 Pod
持久 DNS 名称<service>.<namespace>.svc.cluster.local
负载均衡自动分配请求到健康 Pod
多种类型ClusterIP, NodePort, LoadBalancer 等
会话保持通过 sessionAffinity 配置

三、Service 类型对比

1. ClusterIP (默认)

apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: MyAppports:- protocol: TCPport: 80       # Service 端口targetPort: 9376  # Pod 端口

特点

  • 仅在集群内部可访问
  • 自动分配集群内部虚拟 IP
  • 通过 kube-proxy 实现流量转发

2. NodePort

spec:type: NodePortports:- port: 80targetPort: 80nodePort: 30007  # 可选,默认 30000-32767

特点

  • 在每个 Node 上开放静态端口
  • 外部可通过 NodeIP:NodePort 访问
  • 底层仍依赖 ClusterIP

3. LoadBalancer

spec:type: LoadBalancerports:- port: 80targetPort: 80

特点

  • 需要云提供商支持 (AWS ELB, GCP LB 等)
  • 自动创建外部负载均衡器
  • 产生公网 IP 或 DNS

4. ExternalName

spec:type: ExternalNameexternalName: my.database.example.com

特点

  • 将服务映射到外部 DNS
  • 不创建任何代理或端口转发
  • 用于集成集群外部服务

四、Service 工作原理

1. 流量转发机制

请求
Client
ServiceVIP
iptables/ipvs
Pod1
Pod2
Pod3

2. 核心组件协作

  • kube-proxy:维护节点上的转发规则
  • CoreDNS:提供集群内服务域名解析
  • Endpoint Controller:监控 Pod 变化并更新 Endpoints

五、高级配置

1. 会话保持

spec:sessionAffinity: ClientIPsessionAffinityConfig:clientIP:timeoutSeconds: 3600

2. 多端口服务

ports:- name: httpport: 80targetPort: 80- name: metricsport: 8080targetPort: 8080

3. Headless Service

spec:clusterIP: None  # 创建无头服务ports:- port: 80targetPort: 80

用途

  • 用于 StatefulSet
  • 需要直接访问 Pod 的场景
  • 自定义服务发现机制

六、服务发现方式

1. 环境变量

MY_SERVICE_SERVICE_HOST=10.0.0.1
MY_SERVICE_SERVICE_PORT=80

2. DNS 发现

# 集群内解析
nslookup my-service.default.svc.cluster.local

3. 直接访问

curl http://<service-name>.<namespace>.svc.cluster.local

七、最佳实践

  1. 命名规范

    • 使用小写字母和连字符 my-service
    • 避免使用下划线或大写字母
  2. 标签选择器

    selector:app: frontendtier: production
    
  3. 与 Deployment 配合

    # deployment.yaml
    labels:app: nginxversion: v1# service.yaml
    selector:app: nginxversion: v1
    
  4. 监控与调试

    # 检查 Endpoints
    kubectl get endpoints <service-name># 查看服务详情
    kubectl describe svc <service-name>
    

Service 是 Kubernetes 网络模型的核心组件,理解其工作原理对于构建可靠的应用架构至关重要。

http://www.xdnf.cn/news/3184.html

相关文章:

  • 耘想WinNAS:企业级NAS解决方案的终极选择
  • sora 文本生图能力体验
  • 柔性生产是什么?怎样能实现柔性生产?
  • Java Class类文件结构
  • sql server 2008 r2 下载安装
  • 【前缀和】二维前缀和(模板题)
  • 动态规划降低空间复杂度例题及简化
  • Android Studio下载安装教程
  • pybind11 使用指南+示例
  • kibana重建es索引
  • 【Python学习路线】零基础到项目实战
  • AI Agent(1):概念与定义
  • [论文精读]Agent综述—— A survey on large language model based autonomous agents
  • 关于 MCP 的理论知识学习
  • 【影刀RPA实战案例】小红书商品数据采集
  • 文本解析到大模型应用
  • 大力探索“AI·Life爱生活”项目峰会暨战略投资签约仪式成功举办
  • C++中std::map、std::list和std::deque的底层实现是怎样的?
  • DeepSeek-Prover-V2-671B:数学推理的大模型新力量
  • UDP报文结构
  • 函数调用及Chain——SQL+GLM
  • 临床回归分析及AI推理
  • Cypress/Playwright 跨浏览器测试
  • QWen3对比QWen2.5:显著优势解析
  • Kubernetes Service 访问方式详解
  • GLM调用三种方式及多轮对话
  • 2025.4.27 Vue.js 基础学习笔记
  • using var connection = connectionFactory.CreateConnection(); using var 是什么意思
  • WPACS基于HTML5的DICOM影像浏览
  • 可编辑25页PPT | 企业数字底座:数据中台构建路径、方法和实践