容器卡在部署升级状态时,Remove-ServiceFabricComposeDeployment执行超时
解决Service Fabric Compose部署删除超时问题
这情况我之前碰到过好几次,卡在Upgrading状态的Service Fabric Compose部署确实容易出现删除超时的问题,结合你推测的ACR访问故障,咱们可以按下面的步骤来排查解决:
1. 先验证ACR访问问题(确认你的推测)
既然你怀疑是SF集群无法访问ACR导致部署卡住,先落地验证这个点:
- 登录到SF集群的任意节点,执行
docker login <你的ACR名称>.azurecr.io,用ACR的管理员账号或者有权限的服务主体账号测试登录,看是否能成功完成登录。 - 如果登录失败,重点检查这几个点:ACR的防火墙规则是不是限制了IP范围,集群节点的公网/内网IP不在允许列表里;或者服务主体的密钥过期、权限被撤销了。
2. 先强制终止挂起的升级进程
删除命令超时很大概率是因为后台的升级进程还在挂着,先把这个进程终止掉:
Stop-ServiceFabricComposeDeploymentUpgrade -DeploymentName XYZ -Force
执行完后等个3-5分钟,再用Get-ServiceFabricComposeDeploymentUpgrade -DeploymentName XYZ检查升级状态,确认它变成RollbackCompleted或者Failed。
3. 节点级手动清理残留资源
如果终止升级的命令还是超时,那就直接登录到集群节点,手动清理相关的容器和本地缓存:
- 找到对应部署的容器:
docker ps -a | findstr XYZ,找到后用docker rm -f <容器ID>强制删除。 - 删除关联的ACR镜像:
docker images | findstr <你的ACR名称>,用docker rmi <镜像ID>清理掉。 - 清理SF的本地工作目录:默认路径Windows是
C:\ProgramData\SF\Fabric\work\Applications,Linux是/var/lib/sfc/Fabric/work/Applications,找到对应fabric:/XYZ应用的文件夹直接删除。
4. 重新尝试删除部署
等上面的清理操作都完成后,再执行删除命令:
Remove-ServiceFabricComposeDeployment -DeploymentName XYZ -Force
这次应该能顺利执行了,如果还是超时,建议用Get-ServiceFabricClusterHealth检查集群整体健康状态,看看有没有节点故障或者系统服务异常拖慢操作。
内容的提问来源于stack exchange,提问作者Kai Walter
相关产品推荐
相关产品推荐

