You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Monitor告警显示AKS节点内存预留达101%,如何解决?

问题解答

一、自动扩缩容是否会生效?

AKS集群自动扩缩容(Cluster Autoscaler)的触发逻辑是存在无法调度的Pending Pod,而非节点资源使用率过高。当前节点内存已达101%但所有40个Pod均处于运行状态时,自动扩缩容不会主动触发扩容。只有当新Pod因节点内存不足无法调度到现有节点时,才会触发节点扩容至最大5个节点的上限。

二、手动释放内存的可行方法

1. 定位高内存消耗Pod

执行命令查看所有Pod的内存占用情况,排序找出高负载Pod:

kubectl top pods --all-namespaces --sort-by=memory

2. 优化Pod资源配置与应用

  • 检查Pod的resources.requests.memory和resources.limits.memory设置,若请求值过高导致节点预留资源被占满,可根据实际使用情况下调请求值;
  • 查看Pod是否存在内存泄漏:通过kubectl describe pod <pod-name>检查事件中是否有OOMKilled记录,结合应用日志排查内存泄漏问题,必要时重启或更新应用版本。

3. 清理无效Pod

  • 删除闲置、测试用或已完成任务的Pod;
  • 排查CrashLoopBackOff状态的Pod,这类Pod反复重启会持续占用资源,需修复应用或删除无效实例。

4. 节点级资源清理

  • 驱逐并重启节点:先将节点上的Pod驱逐(忽略守护进程集),再重启节点后恢复调度:
    kubectl drain aks-agentpool-XXXXXX-vmss000000 --ignore-daemonsets
    # 通过Azure门户/CLI重启该VMSS实例
    kubectl uncordon aks-agentpool-XXXXXX-vmss000000
    
  • 检查系统组件内存占用:查看kubelet、containerd等组件的内存使用情况,确认是否因版本兼容问题(Kubernetes 1.25.11需匹配对应版本的容器运行时)导致异常占用,必要时升级组件版本。

5. 调整节点资源预留(谨慎操作)

AKS节点默认会预留部分资源给系统组件,若节点总内存远大于当前显示的4.5GB预留值,可通过修改节点池的系统预留配置调整,但需确保系统组件有足够资源运行,避免引发稳定性问题。

内容的提问来源于stack exchange,提问作者Rakesh V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:54:55