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

k8s术语之service

Kubernetes在设计之初就充分考虑了针对容器的服务发现与负载均衡机制,提供了Service资源,并通过kube-proxy配合cloud provider 来适应不同的用于场景。随着kubernetes用户的激增,用户场景的不断丰富,又产生了一些新的负载均衡机制。目前kubernetes 中的负载均衡大致可以分为以下几种机制,每种机制都有其特定的应用场景:

        service:直接用Service提供cluster内部的负载均衡,但是通过自定义的LB提供外部访问

        Ingress Controller:还是用Service提供cluster内部的负载均衡,但是通过自定义的 IngressController提供访问

        Service Load Balancer:把load balancer直接跑在容器中,实现Bare Metal的Service LoadBalancer

        Custom Load Balancer:自定义负载均衡,并代替kube-proxy,一般在物理部署Kubernetes时使用,方便接入公司已有的外部服务

Service

        Service是对一组提供相同功能的Pods的抽象,并为它们提供一个统一的入口。借助Service,应用可以方便的实现服务发现与负载均衡,并实现应用的零宕机升级。Service通过标签来选取服务后端,一般配合Replication Controller 或者 Deployment来保证后端容器的正常运行。这些匹配标签的Pod IP和端口列表组成endpoints,由kube-proxy负责将服务IP负载均衡到这些endpoins上。

Service:有四种类型

        ClusterIP:默认类型,自动分配一个仅cluster内部可以访问的虚拟IP

        NodePort:在ClusterIP基础上为Service在每台机器上绑定一个端口,这样就可以通过<NodeIP>:NodePort 来访问该服务。如果kube-proxy设置了--nodeport-addresses=10.240.0.0/16,那么仅该NodePort 仅对设置在范围内的IP有效

        LoadBalancer:在NodePort的基础上,借助cloud provider常见一个外部的负载均衡器,并将请求转发到<NodeIP>:NodePort

        ExternalName:将服务通过DNS CNAME记录方式转发到指定的域名(通过spec.externlName设定 )。需要kube-dns版本在1.7以上。

        另外,也可以将已有的服务以Service的形式加入到Kubernetes集群中来,只需要在创建Service的时候不指定Label selector,而是在Service创建后手动为其添加endpoint

Service定义

        Service的定义也是通过yaml或json,比如下面定义了一个名为nginx的服务,将服务的80端口转发到default namespace中带有标签run=nginx的Pod的80端口

        Service可以说是kubernetes中最核心的资源对象之一了,每个Service就是一个“微服务”,RC、Pod等资源对象都是为Service来做嫁衣的!

Pod、RC与Service的逻辑关系如下图:

 

        Service定义一个服务的访问入口地址,前端的应用(pod)通过这个入口访问其背后的一组有Pod副本组成的集群实例,Service与后端Pod副本集群则是通过lable selector来实现无缝对接,而RC的作用实际上是保证Service的服务能力和服务质量始终保持在预期标准

                

相关文章:

  • 开源模型应用落地-qwen模型小试-Qwen3-8B-推理加速-vLLM-结构化输出(三)
  • 遥控器网络推拉流技术要点!
  • 荣耀A8互动娱乐组件部署实录(第4部分:房间服务端逻辑与玩家交互处理)
  • 纷析云开源财务软件:重新定义企业财务自主权
  • 数字传播生态中开源链动模式与智能技术协同驱动的品牌认知重构研究——基于“开源链动2+1模式+AI智能名片+S2B2C商城小程序”的场景化传播实践
  • 《面向对象程序设计-C++》实验五 虚函数的使用及抽象类
  • 深入理解 Linux 阻塞IO与Socket数据结构
  • 目标检测(Object Detection)研究方向常用数据集简单介绍
  • 6.5 行业特定应用:金融、医疗、制造等行业的定制化解决方案
  • ts axios中报 Property ‘code‘ does not exist on type ‘AxiosResponse<any, any>‘
  • 如何配置 VScode 断点调试Linux 工程代码
  • 总结七种提示优化方案的核心实现流程
  • 数据分析指标体系
  • 信息论01:从通信到理论的飞跃
  • 移植的本质是什么
  • UE5 C++项目实现单例
  • Java泛型深度解析与电商场景应用
  • ExtraMAME:复古游戏的快乐“时光机”
  • Github 2025-05-06Python开源项目日报 Top10
  • Spring AI 与大语言模型工具调用机制详细笔记
  • 五一假期上海边检查验出入境人员超61万人次,同比增长23%
  • 经济日报头版刊文:为什么贸易战没有出路
  • 云南禄丰一尾矿干堆场坍塌致5人被埋
  • 视觉周刊|劳动开创未来
  • 巴菲特股东大会4.5万字问答实录:股神60年穿越牛熊的最新心得和人生思考
  • 新加坡执政党人民行动党在2025年大选中获胜