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

k8s将service的IP对应的不同端口分配到不同的pod上

在Kubernetes中,Service是一种抽象层,它将请求路由到一组Pod。当你需要将Service的不同端口映射到不同的Pod时,可以通过以下两种主要方式实现:

方法一:使用单个Service的多端口配置

如果不同的Pod提供不同的服务(如HTTP和HTTPS),但属于同一应用,可以在同一个Service中定义多个端口,每个端口映射到不同的Pod端口。

示例配置
apiVersion: v1
kind: Service
metadata:name: my-multi-port-service
spec:selector:app: my-app  # 选择所有带有app=my-app标签的Podports:- name: http  # 端口名称(必须唯一)port: 80    # Service端口(集群内访问)targetPort: 8080  # 后端Pod端口(HTTP服务)- name: httpsport: 443targetPort: 8443  # 后端Pod端口(HTTPS服务)
工作原理
  • 客户端通过Service的IP和端口(如10.96.0.10:80)访问。
  • kube-proxy根据端口将请求转发到匹配app=my-app标签的Pod的对应端口(如80808443)。

方法二:使用多个Service指向不同的Pod组

如果不同的功能由不同标签的Pod提供(如前端和后端),可以创建多个Service,每个Service选择不同的Pod组

示例配置
# 前端Service
apiVersion: v1
kind: Service
metadata:name: frontend-service
spec:selector:app: my-apptier: frontend  # 仅选择前端Podports:- port: 80targetPort: 3000---
# 后端Service
apiVersion: v1
kind: Service
metadata:name: backend-service
spec:selector:app: my-apptier: backend  # 仅选择后端Podports:- port: 80targetPort: 8080
工作原理
  • 客户端通过不同的Service IP访问(如frontend-service:80backend-service:80)。
  • 每个Service独立路由到其选择的Pod组(通过标签筛选)。

方法三:使用EndpointSlice(高级场景)

对于超大规模集群,可以通过EndpointSlice手动控制Service与Pod的映射关系,实现更细粒度的端口分配。

示例配置
# 创建EndpointSlice
apiVersion: discovery.k8s.io/v1
kind: EndpointSlice
metadata:name: my-service-eplabels:kubernetes.io/service-name: my-service
addressType: IPv4
ports:- name: httpprotocol: TCPport: 80- name: httpsprotocol: TCPport: 443
endpoints:- addresses:- "10.244.1.10"  # Pod 1 IPports:- name: httpport: 8080- name: httpsport: 8443- addresses:- "10.244.1.11"  # Pod 2 IPports:- name: httpport: 8080- name: httpsport: 8443
工作原理
  • EndpointSlice显式指定每个Pod的IP和端口映射。
  • Service通过标签kubernetes.io/service-name关联到该EndpointSlice。

选择策略

场景推荐方法
同一组Pod提供多个服务端口单个Service的多端口配置
不同组Pod提供不同服务多个Service指向不同Pod组
超大规模集群或自定义负载均衡使用EndpointSlice

验证配置

  1. 查看Service配置

    kubectl describe service my-service
    
  2. 检查Endpoint映射

    kubectl get endpoints my-service
    
  3. 测试访问

    # 在集群内Pod中测试
    curl http://<SERVICE_IP>:<PORT>
    

总结

通过合理设计Service的端口映射和标签选择器,你可以灵活地将请求路由到不同的Pod端口。对于复杂场景,建议结合使用多个Service和EndpointSlice,以实现更精细的流量控制。

http://www.lryc.cn/news/578508.html

相关文章:

  • Vue 3 中的 `h` 函数详解
  • CAD文件处理控件Aspose.CAD教程:使用 Python 将绘图转换为 Photoshop
  • 【Python】字典get方法介绍
  • 面试拷打-20250701
  • 计网学习笔记第1章 计算机网络体系结构(灰灰题库)
  • 论文阅读笔记 NoPoSplat
  • 笔记/计算机网络
  • 动手学深度学习13.5. 多尺度目标检测-笔记练习(PyTorch)
  • 推客系统小程序终极指南:从0到1构建自动裂变增长引擎,实现业绩10倍增长!
  • (JAVA)自建应用调用企业微信API接口,实现消息推送
  • uniapp+vue写小程序页面,实现一张图片默认放大后,可以在容器内上下左右拖动查看
  • android13 如何定时输出app的帧率FPS
  • 应急响应类题练习——玄机第五章 Windows 实战-evtx 文件分析
  • mac重复文件清理,摄影师同款清理方案
  • COCO、VOC 和 YOLO三种主流目标检测数据格式的详细对比与示例说明
  • Java Selenium反爬虫技术方案
  • 笔记本电脑怎样投屏到客厅的大电视?怎样避免将电脑全部画面都投出去?
  • 基于c#语言的股票模拟交易软件的开发与实现
  • Vue3 使用 i18n 实现国际化完整指南
  • AiPy实战(7):一键生成天气组件,解放UI设计的双手
  • 应用场景全解析:飞算 JavaAI 的实战舞台
  • 业界优秀的零信任安全管理系统产品介绍
  • 启用不安全的HTTP方法
  • 内部类与Lambda的衍生关系(了解学习内部类,Lambda一篇即可)
  • [6-02-01].第48节:场景整合 -搭建父项目
  • DIC技术在金属材料裂纹尖端张开位移(COD)分析中的创新应用
  • Badoo×亚矩云手机:社交约会革命的“云端心跳加速剂“
  • 企业上网行为管理:零信任安全产品的对比分析
  • 3D 商品展示与 AR 试戴能为珠宝行业带来一些便利?
  • 软件测试复习之单元测试