当前位置: 首页 > 知识库问答 >
问题:

使用水平Pod自动扩展以及资源请求和限制

丁豪
2023-03-14

假设我们有以下部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  ...
spec:
  replicas: 2
  template:
    spec:
      containers:
        - image: ...
          ...
          resources:
            requests:
              cpu: 100m
              memory: 50Mi
            limits:
              cpu: 500m
              memory: 300Mi

我们还创建了一个水平Pod自动缩放器对象,该对象根据CPU平均利用率自动增加/减少Pod的数量。我知道 HPA 会根据资源请求计算 Pod 的数量,但是如果我希望容器能够在水平扩展之前请求更多资源,该怎么办?

我有两个问题:

1) 当定义HPA时,K8是否使用资源限制?

2) 我是否可以告诉 HPA 根据资源限制而不是请求进行扩展?或者作为实现此类控件的一种手段,是否可以将目标利用率值设置为大于 100%?

共有2个答案

方轩昂
2023-03-14

在部署中,我们有资源请求和限制。根据此处的文档,这些参数在HPA成为自动缩放器的主要角色之前起作用:

    < li >当您创建Pod时,Kubernetes计划程序会为Pod选择一个运行节点。每个节点对于每种资源类型都有一个最大容量:它可以为pod提供的CPU和内存量。 < li >然后kubelet启动一个Pod的容器,它将CPU和内存限制传递给容器运行时。 < li >如果容器超过其内存限制,它可能会被终止。如果它是可重启的,kubelet将重启它,就像任何其他类型的运行时故障一样。

如果容器超过了它的内存请求,它的Pod很可能会在节点内存溢出时被逐出。

另一方面:

水平 Pod 自动缩放器作为控制循环实现,其周期由控制器管理器控制(默认值为 15 秒)。控制器管理器根据每个水平Pod自动缩放器定义中指定的指标查询资源利用率。

注意:请注意,如果某些 Pod 的容器未设置相关的资源请求,则不会定义 Pod 的 CPU 利用率,并且自动缩放程序不会对该指标执行任何操作。

希望这个帮助

濮阳俊明
2023-03-14

不,HPA根本没有考虑限制。您可以将目标利用率指定为任何值,甚至高于100%。

 类似资料:
  • 问题内容: 这是我的代码,用于限制分钟的请求数: 问题是没有错误,但是即使从资源请求了10个以上的请求,它也不会抛出“ Too Many Request” 问题答案: 我使用GAE项目中的配置代码以及开发服务器来使其工作。 我使用Restlet的2.3.1版本/ GAE的1.9.18版本以及以下代码作为客户端: 在第10次通话后,我遇到以下异常: 希望对您有帮助,蒂埃里

  • 注意:TPR已经停止维护,kubernetes 1.7及以上版本请使用CRD。 自定义资源是对Kubernetes API的扩展,kubernetes中的每个资源都是一个API对象的集合,例如我们在YAML文件里定义的那些spec都是对kubernetes中的资源对象的定义,所有的自定义资源可以跟kubernetes中内建的资源一样使用kubectl操作。 自定义资源 Kubernetes1.6版

  • 该扩展能根据Scrapy服务器及您爬取的网站的负载自动限制爬取速度。 设计目标 更友好的对待网站,而不使用默认的下载延迟0。 自动调整scrapy来优化下载速度,使得用户不用调节下载延迟及并发请求数来找到优化的值。 用户只需指定允许的最大并发请求数,剩下的都交给扩展来完成。 扩展是如何实现的 在Scrapy中,下载延迟是通过计算建立TCP连接到接收到HTTP包头(header)之间的时间来测量的。

  • 扩展资源和操作类 包括一系列资源在数据库中对应的记录和操作,这些模块的格式都很相似,一般包括若干个静态资源类和一个操作的mixin实现类。这个mixin类一般都是扩展核心plugin的资源、方法等支持,即提供扩展资源操作,一般继承自extension包中对应的基础类。

  • 我有一个Spring boot应用程序,并为此创建了一个部署yaml文件。现在我已经为它分配了资源: 并且我已将我的自动标量创建为: 现在我的问题是,当我的应用程序启动时,pod的CPU利用率几乎达到100%(启动期间仅5-10分钟,然后恢复正常),因此我的自动标量创建了一个新pod。 但我想要的是它应该在pod启动后等待一段特定的时间(准备状态探测完成),然后只有在需要时才会创建新的pod

  • 我正试图用三个额外的日期(时间戳)字段扩展扩展扩展名(新闻),并希望在(新闻)的fluidtemplate中调用这些字段。 我已经连线到目前为止,我可以看到我的后端额外的字段,而无需选择一个外部类型-我已经相应地修改了ext_tables.php,并可以保存数据。 现在,我试图在我的新闻流模板中使用这些字段,在我的Partials/List/Item中使用以下代码。html-{newsItem.d