如何查找并更新GKE集群中的废弃API?相关问题求助
问题解决指南
一、修复CustomResourceDefinition废弃API问题
你遇到的capacityrequests.internal.autoscaling.k8s.io这个CRD,使用了K8s 1.22已移除的apiextensions.k8s.io/v1beta1 API版本,需升级至apiextensions.k8s.io/v1,操作步骤如下:
- 备份现有CRD配置:
kubectl get crd capacityrequests.internal.autoscaling.k8s.io -o yaml > crd-capacityrequests-backup.yaml - 转换CRD为v1版本:
使用kubectl convert工具自动适配v1版本结构要求:
若没有kubectl convert -f crd-capacityrequests-backup.yaml --output-version apiextensions.k8s.io/v1 > crd-capacityrequests-v1.yamlkubectl convert工具,可手动编辑yaml文件:将apiVersion改为apiextensions.k8s.io/v1,同时把原spec.validation迁移到spec.versions[*].schema.openAPIV3Schema,确保spec.versions包含name、served、storage等必填字段。 - 应用升级后的CRD:
kubectl apply -f crd-capacityrequests-v1.yaml - 验证结果:
查看CRD的API版本是否更新成功:
同时需确认依赖该CRD的组件(如集群自动扩缩容相关组件)版本兼容K8s 1.22+,避免兼容性问题。kubectl get crd capacityrequests.internal.autoscaling.k8s.io -o jsonpath='{.apiVersion}'
二、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/v1API。 - API转换层兼容:K8s集群存在API请求转换机制,旧API路径的请求会被自动转换为v1版本处理,UI可能仅展示了客户端发起请求的原始路径,而非实际存储的API版本。
- 遗留资源引用:部分旧ClusterRoleBinding对象可能由v1beta1版本创建,但K8s会自动将其转换为v1版本存储,UI展示时可能仍显示旧API路径,可通过以下命令查看实际存储版本:
kubectl get clusterrolebindings -o jsonpath='{.items[0].apiVersion}'
内容的提问来源于stack exchange,提问作者a1dude
相关产品推荐
相关产品推荐

