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

如何查找并更新GKE集群中的废弃API?相关问题求助

问题解决指南

一、修复CustomResourceDefinition废弃API问题

你遇到的capacityrequests.internal.autoscaling.k8s.io这个CRD,使用了K8s 1.22已移除的apiextensions.k8s.io/v1beta1 API版本,需升级至apiextensions.k8s.io/v1,操作步骤如下:

  1. 备份现有CRD配置:
    kubectl get crd capacityrequests.internal.autoscaling.k8s.io -o yaml > crd-capacityrequests-backup.yaml
    
  2. 转换CRD为v1版本:
    使用kubectl convert工具自动适配v1版本结构要求:
    kubectl convert -f crd-capacityrequests-backup.yaml --output-version apiextensions.k8s.io/v1 > crd-capacityrequests-v1.yaml
    
    若没有kubectl convert工具,可手动编辑yaml文件:将apiVersion改为apiextensions.k8s.io/v1,同时把原spec.validation迁移到spec.versions[*].schema.openAPIV3Schema,确保spec.versions包含name、served、storage等必填字段。
  3. 应用升级后的CRD:
    kubectl apply -f crd-capacityrequests-v1.yaml
    
  4. 验证结果:
    查看CRD的API版本是否更新成功:
    kubectl get crd capacityrequests.internal.autoscaling.k8s.io -o jsonpath='{.apiVersion}'
    
    同时需确认依赖该CRD的组件(如集群自动扩缩容相关组件)版本兼容K8s 1.22+,避免兼容性问题。

二、Web UI中出现/apis/rbac.authorization.k8s.io/v1beta1/clusterrolebindings的原因

K8s 1.22虽已移除rbac的v1beta1 API,但Web UI显示该路径通常有以下原因:

  • Web UI版本老旧:若使用的是旧版Kubernetes Dashboard或其他集群管理UI,其内部客户端仍在调用旧API路径,建议升级UI至兼容K8s 1.22+的版本(如Dashboard v2.5及以上),新版本会默认使用rbac.authorization.k8s.io/v1 API。
  • API转换层兼容:K8s集群存在API请求转换机制,旧API路径的请求会被自动转换为v1版本处理,UI可能仅展示了客户端发起请求的原始路径,而非实际存储的API版本。
  • 遗留资源引用:部分旧ClusterRoleBinding对象可能由v1beta1版本创建,但K8s会自动将其转换为v1版本存储,UI展示时可能仍显示旧API路径,可通过以下命令查看实际存储版本:
    kubectl get clusterrolebindings -o jsonpath='{.items[0].apiVersion}'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:42:43