GKE提示需迁移至更新API但未使用对应Ingress API报错咨询
GKE
extensions/v1beta1/ingresses API 迁移报错排查方案 你执行kubectl get deployment [mydeployment] -o yaml查不到旧API引用是正常的——这个报错和你当前操作的Deployment资源没有直接关系,触发告警的核心原因是集群内存在存量旧版API资源,或者有运行中的组件在后台调用已被废弃的Ingress接口。
按以下顺序排查即可定位问题:
全集群扫描存量Ingress资源的API版本
执行以下命令输出所有命名空间下Ingress的所属空间、名称、使用的API版本:kubectl get ingresses --all-namespaces -o jsonpath='{range .items[*]}{.metadata.namespace}/{.metadata.name} apiVersion: {.apiVersion}{"\n"}{end}'GKE 1.22及以上版本已完全移除
extensions/v1beta1版本的Ingress API,只要集群内残留任何用该旧版本创建的Ingress资源,控制面就会持续推送迁移告警,和你正在操作的Deployment配置无关。
如果扫描结果里存在apiVersion: extensions/v1beta1的条目,将对应Ingress配置导出后,把apiVersion字段替换为networking.k8s.io/v1,补充新版API要求的pathType等必填字段后重新apply即可完成存量资源迁移,操作前建议先备份配置避免业务流量中断。若所有Ingress都已经是
networking.k8s.io/v1版本,排查集群内运行的组件调用
旧版本的集群组件、第三方插件会持续在后台轮询调用旧版Ingress API触发告警,重点排查以下对象:- kube-system命名空间下的系统组件:旧版本集群自动扩缩容组件、GKE自带的负载均衡控制器残留进程
- 自行部署的第三方插件:1.0版本以下的ingress-nginx控制器、0.16版本以下的cert-manager、旧版CI/CD部署工具
排查时可以先执行命令拉取所有角色绑定中关联旧版Ingress API权限的条目,定位对应关联的ServiceAccount和工作负载:
kubectl get clusterrolebindings,rolebindings --all-namespaces -o yaml | grep -B2 -A5 "extensions/v1beta1.*ingresses"定位到低版本组件后直接升级到兼容当前GKE版本的正式发行版即可停止旧API调用。
相关报错截图参考:
内容的提问来源于stack exchange,提问作者jopol24
相关产品推荐
相关产品推荐

