首页 > 其他分享 >k8s 自动扩缩容HPA原理及adapter配置详解

k8s 自动扩缩容HPA原理及adapter配置详解

时间:2023-09-22 18:22:45浏览次数:46  
标签:adapter 扩缩容 server 指标 prometheus api HPA k8s pod

大家好,我是蓝胖子,都知道,k8s拥有自动扩缩容机制HPA,我们能够通过配置针对不同的扩缩容场景进行自动扩缩容,往往初学者在面对其中繁多配置的时候会学了又忘记,今天我将会以一种不同的视角,结合api server 请求 来探索这部分的配置,看完本篇,应该会对扩缩容这部分配置会有更深的理解。

自动扩缩容架构图

image.png

我们先来看一下自动扩缩容的原理,在k8s中HPA这个模块的逻辑会定时请求api server 获取相应的pod或者CRD或者其他资源的指标信息,这些指标信息是用户创建HPA的yaml配置文件时指定的。

api server收到请求后,根据请求的api group,api version 转发给内部的api service服务进行处理,当我们想让k8s借用prometheus的相关指标进行扩缩容时,就需要在集群里用api service的方式安装prometheus adapter,它会将发往api server的请求经过包装,转发到prometheus服务器获取对应指标信息,然后将结果经过封装返回给客户端即HPA模块。HPA模块收到指标后,在根据自身配置文件中的target值判断是否需要进行自动扩缩容。

api server 处理请求的方式

既然提到了prometheus adapter是以api service 方式安装到k8s集群中的,我再对api server的架构已经处理请求的方式再阐述下。

api server 处理请求的方式是链式的,你可以简单的理解为api server里有多个http server ,当某个请求的路径不属于某个http server处理范畴内的话,会将这个请求委托给下一个http server进行处理。同时,k8s允许用户自定义api service作为http server,prometheus adapter 就是一个自定义的api service。

api server 请求路径格式

向api server发送http请求,请求格式是按一定规则进行组装的,我主要查看了HPA模块源码,所以拿这块去举例,hpa发往api server的请求是将api version和api group 以及要请求资源的命名空间,资源名拼接到一起组成的路径。如下:

image.png

不同的HPA指标类型这个路径的拼接会有所不同(下面会详细讲到),但是整体的api风格是和这个一致的。

当HPA在向api server发送请求的时候则是根据不同的扩缩容指标类型选择了不同的api group 去发送请求。

❗️❗️

标签:adapter,扩缩容,server,指标,prometheus,api,HPA,k8s,pod
From: https://www.cnblogs.com/hobbybear/p/17723097.html

相关文章

  • nacos 2.2.0 报:requestMappingHandlerAdapter jackson 的错误
    你可以用MavenHelper查看该模块的maven可能就会有冲突。我进行一个解决了这个问题。启动的模块没有在maven中声明继承父模块,我的在该模块添加了:<parent><groupId>com.zhuangjie.spark</groupId><artifactId>spark-modules</artifactId><version>0.0.1-SNAPSHOT</......
  • Glide源码阅读之适配器模式【ArrayAdapterInterface<T>】
    定义菜鸟教程介绍意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。何时使用:1、系统需要使......
  • 结构型设计模式-适配器 Adapter
    结构型设计模式-适配器Adapterdate:April13,2021slug:design-pattern-adapterstatus:Publishedtags:设计模式type:Page简介适配器模式是一种结构型设计模式,它能使接口不兼容的对象能够相互合作角色Client接口/Target目标接口用户使用的接口Adaptee被......
  • K8S HPA在CRD Operator中的应用
    K8SHPA在TrinoOperator中的应用HPA(HorizontalPodAutoscaler)水平扩缩意味着对增加的负载的响应是部署更多的Pod。这与“垂直(Vertical)”扩缩不同,对于Kubernetes,垂直扩缩意味着将更多资源(例如:内存或CPU)分配给已经为工作负载运行的Pod。https://kubernetes.io/zh-cn/do......
  • 华为HPA策略
    HPA:HorizontalPodAutoscalingCCE中弹性伸缩最主要的就是使用HPA(HorizontalPodAutoscaling)和CA(ClusterAutoScaling)两种弹性伸缩策略,HPA负责工作负载弹性伸缩,也就是应用层面的弹性伸缩,CA负责节点弹性伸缩,也就是资源层面的弹性伸缩。 https://support.huaweicloud.com/userm......
  • 报错ValueError: Can't find 'adapter_config.json'
    前言在做组内2030项目时,我具体做的一个工作是对大模型进行LoRA微调,在整个过程中有许多坑,其中有些值得记录的问题,于是便产生了这篇博客。问题我在得到微调好的模型后,需要对模型进行性能测评。在加载模型时,遇到如下报错ValueError:Can'tfind'adapter_config.json'补充:报错......
  • 解决ssh登陆问题sshpass
    一键解决ssh登录密码问题:sshpass的安装与使用原创 运维家 运维家 2023-08-2216:00 发表于北京收录于合集#ssh2个引言 大家好,我是运维家的Linux和Python技术持续学习者。在日常的运维工作中,我们经常需要远程登录服务器进行管理和操作。而对于那些不支持密钥登录......
  • Mixture-of-Domain-Adapters: Decoupling and Injecting Domain Knowledge to Pre-tra
    1.Abstract经过预训练的语言模型(PLM)表现出在通用领域理解文本的出色能力,同时在特定领域中表现不佳。尽管在大型领域特定语料库上继续预训练是有效的,但调整领域上的所有参数是昂贵的。在本文中,我们研究了是否可以通过只调整几个参数来有效地调整PLM。具体来说,我们将Transformer架......
  • SpringBoot复习:(33)WebMvcAutoconfiguration内部静态类WebMvcAutoConfigurationAdapter
    WebMvcAutoconfiguration内部静态类WebMvcAutoConfigurationAdapter实现了WebMvcConfigurer接口,重写了一些方法,也就是默认对SpringMvc进行了一些配置:该静态类上有个**@Import**注解:@Import(EnableWebMvcConfiguration.class)它的父类DelegatingWebMvcConfiguration,通过注入......
  • AdapterPattern-适配器模式
    C#适配器模式(AdapterPattern)是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。适配器模式的核心思想是通过一个适配器类,将原本不兼容的接口转换成兼容的接口,使得客户端能够使用这些接口进行交互,而不需要修改原有的类或接口。适配器模式通常涉及以下几个......