gpt4 book ai didi

kubernetes - Kubernetes Deployment充分利用了cpu和内存而无须强调

转载 作者:行者123 更新时间:2023-12-02 12:25:08 25 4
gpt4 key购买 nike

我已经在Kubernetes上部署了一个应用程序,并想测试hpa。
使用kubectl top nodes命令时,我注意到CPU和内存在不增加压力的情况下增加了。
是否有意义?
同样,在强调使用Apache Bench进行部署时,CPU和内存的增加量不足以传递目标并制作副本。
我的Deployment yaml文件太大,无法提供。这是我的容器之一。

    - name: web
image: php_apache:1.0
imagePullPolicy: Always
resources:
requests:
memory: 50Mi
cpu: 80m
limits:
memory: 100Mi
cpu: 120m
volumeMounts:
- name: shared-data
mountPath: /var/www/html
ports:
- containerPort: 80
它包含15个容器
我有一个VM,其中包含一个包含2个节点(主节点,工作节点)的群集。
我想强调部署,以便我可以看到它扩大规模。
但是我觉得这里有问题!在不强调应用程序的情况下,
来自Pod的CPU /内存已通过目标,并已创建2个副本( 而不强调)。
我知道我提供给容器的请求越多,该百分比就越少。
但是,从一开始就增加内存/ cpu的使用量是否有意义,而无需强调呢?
我希望target的左侧部分(pod中的内存使用量)处于0%的初始值,我一直强调要增加它并创建副本。
但是随着我在apache bench上的压力,这个值最多增加了10%
我们可以在这里看到CPU的使用情况:
kubectl顶荚 NAME CPU(cores) MEMORY(bytes) x-app-55b54b6fc8-7dqjf 76m 765Mi!! 59%是来自Pod的内存使用量,由 内存请求总数/内存(内存使用)来描述。在我的情况下 59%= 765Mi / 1310Mi
HPA yaml文件:
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: hpa
spec:
maxReplicas: 10
minReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
metrics:
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 35

最佳答案

使用kubectl top nodes命令,我注意到在不增加压力的情况下增加了cpu和内存。是否有意义?
是的,这很有道理。如果您将检查有关Requests and LimitsGoogle Cloud

Requests and limits are the mechanisms Kubernetes uses to control resources such as CPU and memory. Requests are what the container is guaranteed to get. If a container requests a resource, Kubernetes will only schedule it on a node that can give it that resource. Limits, on the other hand, make sure a container never goes above a certain value. The container is only allowed to go up to the limit, and then it is restricted.


但是,从一开始就增加内存/ cpu的使用量是否有意义,而无需强调呢?
是的,例如,您的容器 www可以以 memory: 50Micpu: 80m开头,但可以增加为 memory: 100Micpu: 120m。另外,正如您提到的,您总共有15个容器,因此取决于它们的 requestlimits可以达到的范围比 35%memory还要多。
HPA documentation - algorithm-details中,您可以找到以下信息:

When a targetAverageValue or targetAverageUtilization is specified, the currentMetricValue is computed by taking the average of the given metric across all Pods in the HorizontalPodAutoscaler's scale target. Before checking the tolerance and deciding on the final values, we take pod readiness and missing metrics into consideration, however.


All Pods with a deletion timestamp set (i.e. Pods in the process of being shut down) and all failed Pods are discarded.


If a particular Pod is missing metrics, it is set aside for later; Pods with missing metrics will be used to adjust the final scaling amount.


不确定最后一个问题:
!! 59%是来自pod的内存使用量,由“内存请求总数/内存(内存使用量)”描述。在我的情况下,59%= 765Mi / 1310Mi
HPA中,设置为在 pod达到 averageUtilization:35%时创建另一个 memory。它达到了 59%,并创建了另一个Pod。由于HPA目标是 memory,所以 HPA根本不算 CPU。另外请记住,这是 average,大约需要1分钟才能更改值。
为了更好地了解 HPA的工作方式,请尝试 this walkthrough
如果这没有帮助,请澄清您的确切要求。

关于kubernetes - Kubernetes Deployment充分利用了cpu和内存而无须强调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63876395/

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