GKE升级至1.22遭弃用API阻塞 空IngressList无法删除
GKE 1.21升级1.22时触发extensions/v1beta1 Ingress弃用告警排查
问题现象
运行Istio 1.12.1的GKE集群从1.21版本升级到1.22版本时,收到多类弃用API告警。其中/apis/extensions/v1beta1/ingresses相关告警不符合预期:集群内所有业务已经完成版本适配,没有创建任何Ingress资源,本不该触发该类告警。
排查过程
执行kubectl raw命令查询旧版Ingress接口,返回空资源列表,同时弹出弃用提示:
➜ kubectl get --raw /apis/extensions/v1beta1/ingresses | jq Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress { "kind": "IngressList", "apiVersion": "extensions/v1beta1", "metadata": { "resourceVersion": "191638911" }, "items": [] }
尝试直接删除该路径下的资源时,收到服务端报错:
➜ kubectl delete --raw /apis/extensions/v1beta1/ingresses Error from server (MethodNotAllowed): the server does not allow this method on the requested resource
当时无法推进集群升级流程,也无法删除所谓的"异常资源"。
原因说明
这个问题是GKE 1.21早期小版本的API服务端bug,并非集群内真的存在未迁移的旧版Ingress资源:
- 返回结果中
items字段为空,已经证明没有实际的旧版Ingress资源实例存在 - 删除操作报错属于Kubernetes API的正常限制:
/apis/extensions/v1beta1/ingresses是资源集合的根路径,不是具体的资源实例,API服务端本身就不允许对集合根路径直接执行DELETE操作 - 告警触发原因是只要有请求打到旧版Ingress API路径,不管有没有返回实际资源,早期版本的GKE都会触发弃用告警,属于误报。
解决方案
将GKE集群先升级到1.21.11-gke.1900补丁版本,该版本修复了空API调用触发弃用告警的逻辑问题,升级完成后相关告警会自动消失,后续即可正常推进1.22版本的集群升级。
内容的提问来源于stack exchange,提问作者Sunil
相关产品推荐
相关产品推荐

