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

AKS中KEDA ScaledJob无响应及Pod被驱逐问题求助

问题分析与解决方案

问题根源

从Pod错误信息可直接定位核心问题:

The node was low on resource: ephemeral-storage. Container azdevops-agent-job was using 23001896Ki, which exceeds its request of 0.

问题出在容器未配置临时存储(ephemeral-storage)的请求与限制,当容器占用的临时存储超出节点剩余资源时,Kubernetes会直接驱逐该Pod,导致Azure DevOps Agent失联,进而引发流水线挂起。

另外,你的集群仅使用1台Standard_E8ds_v5节点(本地SSD临时存储容量64Gi),未做存储配额限制的情况下,多Agent Pod并发运行极易耗尽节点存储资源。

解决方案

1. 为容器配置临时存储的请求与限制

在ScaledJob的容器资源配置中添加ephemeral-storage的请求和限制值,根据实际使用情况调整(比如参考当前容器的23Gi使用量,设置请求10Gi、限制25Gi预留缓冲空间):

containers:
- env:
  # 省略原有环境变量配置
  resources:
    limits:
      cpu: 1500m
      memory: 6Gi
      ephemeral-storage: 25Gi  # 添加临时存储限制
    requests:
      cpu: 500m
      memory: 3Gi
      ephemeral-storage: 10Gi  # 添加临时存储请求
  # 省略原有容器其他配置

2. 调整ScaledJob的最大副本数

结合单节点的资源容量重新计算合理的最大副本数:

  • CPU维度:Standard_E8ds_v5为8核,每个Pod请求0.5核,扣除节点系统资源后最多支持12-14个Pod,但受限于存储容量
  • 存储维度:节点临时存储共64Gi,每个Pod限制25Gi的话,最多仅能运行2个Pod
    建议将maxReplicaCount调整为2,或扩容节点池增加实例数后再提升副本数。

3. 优化Agent的临时存储占用

  • 修改Agent工作目录到已挂载的Azure Disk持久卷:当前已挂载/mnt,可通过环境变量指定Agent工作目录,减少临时存储消耗:
    - name: AZP_WORK
      value: /mnt/work
    
  • 清理Agent镜像中的冗余文件、压缩镜像层,减小镜像本身的存储占用。

4. 配置节点存储预留

为AKS节点的系统组件预留部分临时存储,避免系统进程占用过多资源导致Pod被驱逐。可通过节点池的--kubelet-config参数配置evictionHard中的nodefs.available阈值,例如设置为节点存储的10%。

验证步骤

  1. 更新ScaledJob配置并应用:
    kubectl apply -f scaledjob.yaml -n ado
    
  2. 触发流水线,观察Pod状态,确认不再出现驱逐错误。
  3. 监控节点临时存储使用情况:
    kubectl describe node <节点名称> | grep -A 10 "Ephemeral Storage"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:17:42