首页 > 其他分享 >kube-apiserver限流配置

kube-apiserver限流配置

时间:2024-02-12 14:22:05浏览次数:32  
标签:max inflight apiserver 限流 requests kube

k8s v1.19.0

APF之前限流

客户端访问kube-apiserver,限流参数有max-mutating-requests-inflight(默认值是200,对应操作类请求)和max-requests-inflight(默认值是400,对应查询类请求)。

staging/src/k8s.io/apiserver/pkg/server/filters/maxinflight.go
WithMaxInFlightLimit函数
分别创建容量为max-requests-inflight和max-mutating-requests-inflight的channel,在channel中有余量情况下才能处理请求,没有余量时直接丢弃,不是每秒限流值。

开启APF

API优先级和公平性(APF)解决多个客户端之间请求相互影响的问题,避免某个客户端请求量大导致别的客户端因限流而处理慢。其中,优先级指高优先级请求比低优先级优先处理,公平性指同级别的请求公平处理。
从k8s 1.20开始,APIPriorityAndFairness门控默认开启。

开启APF,kube-apiserver增加启动参数。
- --runtime-config=flowcontrol.apiserver.k8s.io/v1alpha1=true
- --feature-gates=APIPriorityAndFairness=true
- --enable-priority-and-fairness=true

APF原理

请求进入kube-apiserver后,根据FlowSchema拆分成流,FlowSchema绑定优先级。
默认FlowSchema和PriorityLevelConfiguration

kube-apiserver总并发量=max- requests-inflight+max-mutating-requests-inflight,总并发量分配到不同优先级。
global-default的flowschema spec,FlowSchema+Distinguisher确定flow。

global-default的prioritylevelconfiguration spec。

参考资料

https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/feature-gates/

 

标签:max,inflight,apiserver,限流,requests,kube
From: https://www.cnblogs.com/WJQ2017/p/18013903

相关文章

  • 在k8S中,Kubernetes 准入机制是什么?
    在Kubernetes(k8s)中,准入控制机制(AdmissionControl)是一个关键的安全和策略执行层。它位于APIServer层级,在接收到对集群资源的创建、更新或删除请求后、但实际操作存储在etcd中的数据之前的一个环节。准入控制器是一系列插件式的组件,它们会对发送到APIServer的每个请求进行拦截和......
  • 在k8S中,kubelet的作用是什么?
    在Kubernetes(k8S)中,kubelet是一个核心组件,它负责管理单个计算节点上的容器运行时环境。kubelet的主要功能和作用包括:Pod生命周期管理:kubelet会接收来自APIServer的指令,确保本节点上运行的Pod达到期望的状态。这包括创建、启动、停止或删除Pod中的容器。容器运行时交互:......
  • 在k8S中,kubelet监控Worker节点资源是使用什么组件来实现的?
    在Kubernetes集群中,kubelet是工作节点上的核心服务,它负责确保Pods及其容器按照预期的状态运行。为了实现这一目标,kubelet依赖于内置的cAdvisor组件来进行资源监控。cAdvisor(ContainerAdvisor)是一个开源的容器监控工具,它集成在kubelet内部,随kubelet一同启动。cAdvisor的主要功能包......
  • 一句话总结Kubernetes的Headless服务
    Kubernetes的概念很多,有的着实让人费解,比如说Headless服务,听名字就很拗口。那Headless服务是什么,使用场景是什么。一句话总结:Headless服务就是一组Pod组成的只供集群内访问(没有ClusterIP)的Service,一般结合StatefulSet用于部署有状态应用的场景。1、Service与服务发现提到Headl......
  • 一文总结Kubernetes核心组件-控制器
    在《Kubernetes架构及核心部件》一文中,介绍了Kubernetes的核心部件-控制器的作用:当客户端通过APIServer提交请求时,控制器驱动对象的当前状态逼近提交的期望状态。Kubernetes的资源对象包括Pod、Node、Namespace、Endpoints、Service等,Kubernetes也提供了各种资源对象的控制器......
  • 5小步快速集成使用sentinel限流
    在微服务系统中,缓存、限流、熔断是保证系统高可用的三板斧。本文通过如下几个小步骤,即可让spring项目快速集成使用sentinel实现系统限流。1、环境和资源准备sentinel支持许多流控方式,比如:单机限流、熔断降级、集群限流、系统保护规则、黑白名单授权等。本文介绍如何快速集成......
  • 一份接地气的Kubernetes日志方案
    本文主要聊聊Kubernetes场景下收集微服务应用日志方案,相对来说更接地气,非常好落地。微服务应用的日志链路一般比较长,包含以下环节:日志收集→日志缓冲→日志过滤清洗→日志存储→日志展示。每个环节都有多种对应的组件去解决,这样的结果就是业内组合出了多种整体解决方案......
  • Kubernetes常用命令备忘录
    本文主要整理了Kubernetes常用命令,给朋友们一个备忘录。查看K8S的帮助命令kubectl--help切换被操作的集群默认情况下会在.kube目录下的config文件里的证书去操作K8S集群。如果碰到需要切换访问别的K8S集群的场景,可以使用kubectl--kubeconfigxxxxxx去指定某个证书文件,比如......
  • Kubernetes-Init容器的6个特性
    本文主要从以下4个方面介绍Init容器:Init容器作用、Init容器特性、Init容器与应用容器的区别、Init容器实战。Kubernetes中的Pod内可以运行多个容器,主要分为2种:Init容器、应用容器,Sidecar容器也是一种特殊的Init容器。Init容器的作用Init容器是一种特殊容器,在Pod内的应用容器启......
  • Kubernetes架构及核心部件
    Kubernetes有哪些核心部件,架构图和流程图又是怎样的,kubectl和kubelet经常分不清,声明式API和命令式API又有什么区别,本文一一详说。1、Kubernetes集群概述1.1、概述Kubernetes是一个容器编排平台,它使用共享网络将多个主机(物理服务器或虚拟机)构建成集群。分为MasterNode(主节......