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

GKE环境下Cert-manager DeltaFIFO队列阻塞及工作队列异常求助

解决cert-manager恢复后DeltaFIFO队列阻塞及 stale 资源日志问题

问题分析

  1. DeltaFIFO队列阻塞:日志"DeltaFIFO Pop Process" ID:namespace/model-secrets,Depth:189,Reason:slow event handlers blocking the queue说明cert-manager的事件处理队列出现积压,通常由缓存同步异常、事件处理耗时过长或资源监听负载过高导致。
  2. 已删除Ingress的 stale 日志:ingress 'microservices/test-ingress' in work queue no longer exists是工作队列残留已删除资源处理条目导致的,属于缓存不同步的典型表现。

解决方案

1. 强制重启cert-manager Pod,刷新缓存与队列

直接重启所有cert-manager Pod,清空本地缓存和队列,让控制器重新同步集群资源:

kubectl rollout restart deployment cert-manager -n cert-manager

这是解决缓存不一致问题最直接的方法,重启后队列会重新初始化,stale条目会被自动清理。

2. 检查并优化资源负载

  • 查看cert-manager Pod的实时资源使用,确认是否存在持续高负载:
    kubectl top pods -n cert-manager
    
  • 检查model-secrets命名空间下的资源数量,若存在大量无用的Secret/Certificate资源,及时清理:
    kubectl get secrets -n model-secrets | grep -E 'cert-manager.*' | awk '{print $1}' | xargs kubectl delete secret -n model-secrets
    

3. 调整cert-manager并发处理参数

修改cert-manager Deployment的启动参数,提高并发处理数,加快事件处理速度:

kubectl edit deployment cert-manager -n cert-manager

在args中添加或修改--concurrent参数(默认值为5,可根据集群资源情况调整到10-20):

args:
  - --v=2
  - --cluster-resource-namespace=$(POD_NAMESPACE)
  - --leader-election-namespace=$(POD_NAMESPACE)
  - --controllers=*
  - --concurrent=15  # 调整并发数

保存后Deployment会自动滚动更新。

4. 清理残留的资源Finalizer(针对Ingress stale日志)

如果重启Pod后仍能看到已删除Ingress的日志,检查是否存在Finalizer残留:

# 尝试获取已删除的Ingress(能查到说明有残留)
kubectl get ingress test-ingress -n microservices -o yaml

若存在Finalizer,手动移除:

kubectl patch ingress test-ingress -n microservices -p '{"metadata":{"finalizers":null}}' --type=merge

5. 升级cert-manager版本(推荐)

你当前使用的v1.10.0版本存在不少已知的队列和缓存相关bug,后续稳定版本(如v1.13+,兼容K8s 1.21)已修复此类问题。若集群条件允许,建议升级到较新版本,从根源减少此类问题的发生。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:57:28