AKS集群卸载ingress-nginx chart后ingress-nginx-controller服务无法删除
AKS集群残留ingress-nginx LoadBalancer服务删除失败解决方案
第一步:定位删除失败根因
先执行如下命令查看服务的详细状态和事件日志,确认报错信息:
kubectl describe svc ingress-nginx-controller -n <替换为ingress-nginx所在的命名空间>
绝大多数场景下删除失败是因为服务绑定了未正常清理的finalizer:AKS的LoadBalancer类型服务默认会挂载service.kubernetes.io/load-balancer-cleanup的finalizer,用于删除服务时同步清理Azure侧的公网IP、负载均衡规则等云资源,如果卸载chart时云资源已经被提前删除,finalizer的校验逻辑会卡住,导致服务无法删除。
第二步:移除finalizer完成删除
先确认服务是否挂载了残留finalizer:
kubectl get svc ingress-nginx-controller -n <替换为实际命名空间> -o jsonpath='{.metadata.finalizers}'
如果输出有非空的finalizer条目,执行patch命令清空finalizer:
kubectl patch svc ingress-nginx-controller -n <替换为实际命名空间> -p '{"metadata":{"finalizers":[]}}' --type=merge
执行完成后服务会被自动回收。
如果上述操作无效,可执行强制删除命令:
kubectl delete svc ingress-nginx-controller -n <替换为实际命名空间> --force --grace-period=0
第三步:云侧资源异常排查
如果操作后服务仍未删除,需要排查Azure侧的资源限制:
- 进入Azure门户查看AKS对应的
MC_开头的基础设施资源组,确认是否配置了资源删除锁,存在锁的情况下云资源无法删除会反向卡住k8s服务的删除流程 - 检查资源组下的负载均衡、公网IP资源是否存在残留或者异常状态,手动清理异常资源后再尝试删除服务
内容的提问来源于stack exchange,提问作者Ashis
相关产品推荐
相关产品推荐

