gpt4 book ai didi

api - Kubernetes Horizo​​ntal Pod Autoscaler 如何计算多容器 Pod 的 CPU 利用率?

转载 作者:行者123 更新时间:2023-12-02 11:32:37 26 4
gpt4 key购买 nike

问题 1.)
给定一个多容器 pod 的场景,其中所有容器都有一个定义的 CPU 请求:
Kubernetes Horizo​​ntal Pod Autoscaler 如何计算多容器 Pod 的 CPU 利用率?

它是平均的吗? (((500m cpu req + 50m cpu req)/2) * X% HPA objective-c pu 利用率
它会添加它们吗? ((500m cpu req + 50m cpu req) * X% HPA objective-c pu 利用率
它会单独跟踪它们吗? (500m cpu req * X% HPA objective-c pu 利用率 = 目标 #1,50m cpu req * X% HPA objective-c pu 利用率 = 目标 #2。)
问题 2.)
给定多容器 pod 的场景,其中 1 个容器具有定义的 CPU 请求和其他容器的空白 CPU 请求:
Kubernetes Horizo​​ntal Pod Autoscaler 如何计算多容器 Pod 的 CPU 利用率?

它是否像只有 1 个容器 pod 一样工作?
问题 3.)
问题 1 和 2 的答案是否会根据 HPA API 版本而变化? 我注意到 stable/nginx-ingress helm chart,图表版本 1.10.2,为我部署了一个具有以下规范的 HPA:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
(我注意到 apiVersion: autoscaling/v2beta2 现在存在)
背景信息:
我最近遇到了一个问题,即在将 sidecar(第二个容器)添加到 nginx 入口 Controller 部署(通常是一个带有单个容器的 pod)后,在最小和最大 pod 之间不断地来回扩展。就我而言,它是一个 oauth2 代理,尽管我认为 istio sidecar 容器的人也可能一直遇到此类问题。
apiVersion: apps/v1
kind: Deployment
spec:
replicas: 3
template:
spec:
containers:
- name: nginx-ingress-controller #(primary-container)
resources:
requests:
cpu: 500m #baseline light load usage in my env
memory: 2Gi #according to kubectl top pods
limits:
memory: 8Gi #(oom kill pod if this high, because somethings wrong)
- name: oauth2-proxy #(newly-added-2nd-sidecar-container)
resources:
requests:
cpu: 50m
memory: 50Mi
limits:
memory: 4Gi
我有一个 HPA (apiVersion: autoscaling/v1):
  • 最少 3 个副本(在滚动更新期间保留 HA)
  • targetCPUUtilizationPercentage = 150%

  • 我突然想到我的错误配置导致意外的疯狂扩展是由两个问题引起的:
  • 当 pod 有多个容器时,我实际上不明白 HPA 是如何工作的
  • 我不知道如何深入挖掘以获取正在发生的事情的指标。

  • 解决第一个问题:我集思广益,了解它在单容器场景中的工作原理 (然后意识到我不知道多容器场景所以我决定问这个问题)

    这是我对 HPA(自动缩放/v1)在我有 1 个容器(暂时忽略上述部署规范中的第二个容器)时如何工作的理解:
    当所有 Pod 的 CPU 平均利用率从我的正常预期负载 500m 或更少转移到 750m(150% x 500m 请求)时,HPA 将产生更多副本

    为了解决第二个问题:我发现了如何挖掘以查看具体的基于数值的指标与基于相对百分比的指标,以帮助找出幕后发生的事情:
    bash# kubectl describe horizontalpodautoscaler nginx-ingress-controller -n=ingress | grep Metrics: -A 1
    Metrics: ( current / target )
    resource cpu on pods (as a percentage of request): 5% (56m) / 100%
    (注意:kubectl top pods -n=ingress,显示 5 个副本的 CPU 使用情况为 36m、34m、88m、36m、91m,因此 57m 电流与 56m 电流匹配)
    此外,现在它是一个基本的比例数学问题,可以求解目标静态值:
    (5%/56m) = (100%/x m) --> x = 56 * 100/5 = 1120m objective-c pu
    (注意:此 HPA 与上述部署无关,这就是数字关闭的原因。)

    最佳答案

    基于其他 case 中的 stackoverflow 社区成员的回答

    "HPA calculates pod cpu utilization as total cpu usage of all containers in pod divided by total request. I don't think that's specified in docs anywhere, but the relevant code is here"



    您有更多信息,上面的链接中有示例。

    基于文档

    Horizontal Pod Autoscaler根据观察到的 CPU 利用率(或者, 与 beta 支持,在其他一些应用程序提供的指标 )自动扩展复制 Controller 、部署或副本集中的 pod 数量。

    所以基本上:

    apiVersion自动缩放/v1 HPA 基于 中央处理器 .

    apiVersion 自动缩放/v2beta2 基于 cpu、内存、自定义指标 .

    更多信息 here

    关于api - Kubernetes Horizo​​ntal Pod Autoscaler 如何计算多容器 Pod 的 CPU 利用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57946900/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com