Azure AKS v1.30.5节点池自动扩缩容问题分析与解决方案
AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
在Azure Kubernetes Service (AKS) v1.30.5版本中,当节点池启用了自动扩缩容功能后,用户在使用Azure Machine Learning (AML)服务部署在线端点时可能会遇到部署失败的问题。本文将深入分析这一问题的技术背景、产生原因以及解决方案。
问题现象
当用户在使用AKS v1.30.5版本集群时,如果节点池启用了自动扩缩容功能,尝试通过AML服务部署在线端点时,会遇到以下错误信息:"No route found or no valid deployments to route to, please check that the endpoint has at least one deployment with positive weight values or use a deployment specific header to route."。更值得注意的是,在问题发生时,端点日志中不会显示任何相关信息。
技术背景分析
这个问题源于AKS集群自动扩缩容器(Cluster Autoscaler)与AML扩展组件之间的交互异常。从错误日志中可以观察到,系统在处理Pod调度时出现了日志记录参数不匹配的问题,具体表现为传递了奇数个键值对参数给日志记录系统。
在Kubernetes环境中,自动扩缩容器负责根据工作负载需求动态调整节点数量。当它与其他组件(如AML扩展)交互时,需要确保状态信息的正确传递和处理。在本案例中,自动扩缩容器的状态更新与AML扩展的期望格式不匹配,导致了后续处理流程的中断。
根本原因
深入分析日志和代码路径后,可以确定问题的根本原因在于AML扩展组件中的状态传播逻辑存在缺陷。具体来说:
- 在DeploymentToOnlineDeploymentPropagator组件的needToWaitForAutoScaler方法中,日志记录调用接收了不正确的参数格式
- 当自动扩缩容器更新集群状态时,AML扩展组件无法正确解析这些状态变更
- 这种解析失败导致Pod调度决策无法完成,最终表现为部署失败
解决方案
Azure团队已经通过AMLArcExtension的1.1.70版本修复了这个问题。升级到这个版本后,问题将得到解决。对于遇到此问题的用户,建议采取以下步骤:
- 检查当前使用的AML扩展版本
- 将AMLArcExtension升级至1.1.70或更高版本
- 重新部署受影响的在线端点
最佳实践建议
为了避免类似问题,建议AKS用户:
- 在升级AKS版本前,先验证关键扩展组件的兼容性
- 定期更新扩展组件至最新稳定版本
- 在生产环境部署前,先在测试环境中验证自动扩缩容功能
- 监控集群自动扩缩容器的日志,及时发现潜在问题
通过理解这一问题的技术细节和解决方案,用户可以更好地管理AKS集群与AML服务的集成,确保机器学习工作负载的稳定部署和运行。
AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考