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

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的服务能力和服务质量始终保持在预期标准

                

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

相关文章:

  • k8s pod request/limit 值不带单位会发生什么?
  • 浅谈 - GPTQ为啥按列量化
  • NGINX `ngx_http_browser_module` 深度解析与实战
  • 螺杆支撑座:数控机床高效稳定运行的关键支撑
  • MYSQL的DDL语言和单表查询
  • 完全免费的PDF电子发票批量辅助打印工具
  • vue3+ts继续学习
  • js var a=如果ForRemove=true,是“normal“,否则为“bold“
  • 2025-05-06 事业-独立开发项目-记录
  • 软件代码签名证书SSL如何选择?
  • C++复习2
  • Spring Boot之MCP Client开发全介绍
  • 二叉树—中序遍历—非递归
  • 两数之和(暴力+哈希查找)
  • Linux[Makefile]
  • ffmpeg录音测试
  • 爬虫程序中如何添加异常处理?
  • Vi/Vim 编辑器详细指南
  • Facebook如何运用AI实现元宇宙的无限可能?
  • DC-DC降压型开关电源(Buck Converter)设计中,开关频率(f sw​ )、滤波电感(L)和滤波电容(C out​ )的关系和取舍
  • uniapp 全局混入:监听路由变化,路由变化即执行
  • 嵌入式openharmony标准鸿蒙系统驱动开发基本原理与流程
  • openssl 生成自签名证书实现接口支持https
  • 【coze】手册小助手(提示词、知识库、交互、发布)
  • C++中指针使用详解(4)指针的高级应用汇总
  • 人工智能对人类的影响
  • 【Hive入门】Hive安全管理与权限控制:审计日志全解析,构建完善的操作追踪体系
  • kubeadm部署k8s
  • openwrt 使用quilt 打补丁(patch)
  • 基于图像处理的道路监控与路面障碍检测系统设计与实现 (源码+定制+开发) 图像处理 计算机视觉 道路监控系统 视频帧分析 道路安全监控 城市道路管理