Kubernetes使用内存自动缩放不工作,但为CPU工作



我使用的yaml显示在下方

apiVersion: v1
kind: Service
metadata:
name: xxx-svc
labels:
app: xxxxxx
spec:
type: NodePort
ports:
- port: 8080
selector:
app: xxxxxx
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-xxx
labels:
app: xxxxxx
spec:
selector:
matchLabels:
app: xxxxxx
template:
metadata:
labels:
app: xxxxxx
spec:
containers:
- name: xxxxxx
image: yyy/xxxxxx:latest
ports:
- containerPort: 8080
resources:
requests:
cpu: "100m"
memory: "504Mi"
limits:
cpu: "100m"
memory: "504Mi"
---
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: xxxxxx
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-xxx
minReplicas: 1
maxReplicas: 3
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
- type: Resource
resource:
name: memory
target:
type: Value
averageValue: 500Mi

服务,HPA,部署所有部署成功,但当我检查HPA(kubectl获取HPA(时,我得到的结果低于

NAME        REFERENCE              TARGETS                   MINPODS   
MAXPODS   REPLICAS   AGE
xxxxxx   Deployment/my-xxx   unknown/500Mi, 1%/50%   1         3         3          69m

我得到(kubectl描述hpa(的原因是

警告失败ComputeMetricsReplicas 21m(x4超过22m(水平吊舱自动缩放器无法获得内存利用率:缺少对内存的请求

内存未知但CPU正在工作的原因可能是什么

原因:

警告失败ComputeMetricsReplicas 21m(x4超过22m(水平pod自动缩放器无法获取内存利用率:缺少存储器请求

Kubernetes HPA默认情况下不适用于内存。您需要为内存创建自定义度量,然后使用它。我在这里找到了一些额外的信息,人们试图解决同样的问题。

基于Pod内存的自动缩放

在本节中,我们将讨论如何在pod消耗内存的基础。我们使用了命令">kubectl top pod"以获取已使用的pod内存,并应用思维方式

  • 获取正在运行的pod的平均pod内存:执行如下脚本:

Kubernetes内存的自动伸缩尚未应用。你可以写一个脚本,它位于所需的pod上,获得内存值,并将其除以所需的内存,以获得百分比,并放大或缩小pod。只需在cron作业中运行该脚本,该作业会频繁地检查统计信息。

最新更新