Azure VMSS自定义脚本扩展异常:无法删除或重执行的解决求助
解决VMSS自定义脚本扩展异常:旧URL缓存导致重复失败的问题
我之前碰到过一模一样的情况——你这问题核心是VMSS实例里残留了旧的扩展配置缓存,哪怕你删了扩展或者重新指定了正确URL,系统还是在沿用第一次失败时的错误地址。下面是一步步的解决办法:
1. 彻底清理VMSS层面的扩展配置
先从VMSS全局层面删除有问题的customScript扩展,再强制同步所有实例:
# 删除VMSS上的customScript扩展 az vmss extension delete --resource-group <你的资源组名称> --vmss-name <你的VMSS名称> --name customScript # 强制所有实例同步更新操作,确保扩展被彻底移除 az vmss update-instances --resource-group <你的资源组名称> --name <你的VMSS名称> --instance-ids "*"
2. 手动清理VM实例本地的扩展残留(关键步骤)
有时候VM实例本地会留存旧的扩展配置和缓存文件,这时候需要登录到实例里手动清理:
- 对于Linux实例,找到Custom Script Extension的本地存储目录:
# 进入扩展目录 cd /var/lib/azureextensions/customScript # 删除所有旧配置和文件 sudo rm -rf * - 重启Azure代理服务,让实例刷新扩展状态:
sudo systemctl restart waagent
3. 重新部署正确的自定义脚本扩展
用正确的Blob URL重新配置扩展,确保命令里的fileUris是有效的地址:
az vmss extension set \ --resource-group <你的资源组名称> \ --vmss-name <你的VMSS名称> \ --name customScript \ --publisher Microsoft.Azure.Extensions \ --settings '{"fileUris": ["https://正确的存储账户名.blob.core.windows.net/script/deploytemp.sh"]}' \ --protected-settings '{"commandToExecute": "sh deploytemp.sh"}'
部署完成后,再次同步所有实例:
az vmss update-instances --resource-group <你的资源组名称> --name <你的VMSS名称> --instance-ids "*"
故障排查小技巧
- 检查扩展的当前配置是否正确:
az vmss extension show --resource-group <你的资源组名称> --vmss-name <你的VMSS名称> --name customScript - 查看实例的扩展执行日志,确认问题是否解决:
cat /var/log/azure/customScript/customScript.log
为什么会出现这个问题?
VMSS的Custom Script Extension在首次执行失败后,会在实例本地缓存配置信息。如果只是在VMSS层面删除/重新配置扩展,部分实例可能没及时同步,或者本地缓存的旧任务还在运行,导致重新部署时依然调用错误的URL。必须同时清理VMSS全局配置和实例本地缓存才能彻底解决。
内容的提问来源于stack exchange,提问作者kumar
相关产品推荐
相关产品推荐

