# 错误：升级失败：安装 CRD 失败：无法识别 ""：在版本 "apiextensions.k8s.io/v1beta1" 中找不到类型 "CustomResourceDefinition"

- **ID:** `kubernetes/helm-upgrade-failed-api-version-removed`
- **领域:** kubernetes
- **类别:** config_error
- **验证级别:** ai_generated
- **修复率:** 90%

## 根因

Helm chart 引用了旧版 API（v1beta1），该版本在 Kubernetes 1.22+ 中被移除，导致 CRD 安装失败。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| Helm v3.12.0 | active | — | — |
| Helm v3.13.0 | active | — | — |
| Kubernetes v1.25.0 | active | — | — |
| Kubernetes v1.28.0 | active | — | — |

## 解决方案

1. ```
   更新 Helm chart 使用 apiextensions.k8s.io/v1：运行 `helm pull chart-name --untar`，编辑 CRD YAML 将 `apiVersion: apiextensions.k8s.io/v1beta1` 改为 `apiVersion: apiextensions.k8s.io/v1`，然后使用本地 chart 执行 `helm upgrade --install`。
   ```
2. ```
   使用更新版本的 chart：`helm repo update && helm upgrade my-release chart-name --version <新版本>`。
   ```
3. ```
   如果 chart 不再维护，使用 `kubectl convert` 或迁移工具（如 kubepug）手动转换 CRD。
   ```

## 无效尝试

- **Downgrading the Kubernetes cluster to an older version to support v1beta1** — Downgrading a cluster is complex and risky; it's better to update the chart. (95% 失败率)
- **Manually editing the cluster's API server flags to re-enable v1beta1** — The v1beta1 CRD API was fully removed in 1.22+; no flag can restore it. (100% 失败率)
