我使用的Yaml如下所示
Macro() => Gosub()
MacroExit() => Return()
服务,HPA,部署均成功部署,但是当我检查hpa(kubectl获取hpa)时,我得到的结果低于预期
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
我得到(kubectl描述hpa)的原因是
警告FailedComputeMetricsReplicas 21m(x4超过22m)horizontal-pod-autoscaler无法获得内存利用率:缺少内存请求
内存未知但CPU可以工作的原因可能是什么
答案 0 :(得分:0)
原因:
警告失败计算指标重复21m(x4超过22m) horizontal-pod-autoscaler无法获得内存利用率:丢失 要求记忆
Kubernetes HPA在默认情况下不适用于内存,您需要为内存创建自定义指标然后使用它。 我发现了here一些其他信息,人们如何尝试解决同一问题。
基于Pod内存的AutoScaling
在本节中,我们将讨论如何在 Pod正在消耗的内存基础。我们使用了命令 “ kubectl top pod ”以获取已利用的pod内存并应用 逻辑。
- 获取正在运行的Pod的平均Pod内存:执行脚本,如下所示:
答案 1 :(得分:0)
Kubernetes的内存自动缩放尚未应用。您可以编写一个脚本,在所需的容器顶部放置并获取内存值,然后将其除以所需的内存,以获取百分比并按比例放大或缩小容器。只需在cron作业中运行脚本即可,该作业会定期检查统计信息。