
# 集群升级前检查 - PreCheck
#### 功能介绍
集群升级前检查
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-cce/cce_02_0099.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-cce/cce_02_0395.html)。
- 如果使用身份策略授权，当前API调用无需身份策略权限。
 
#### URI
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/precheck
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释：** 项目ID，获取方式请参见[如何获取接口URI中参数](https://support.huaweicloud.com/api-cce/cce_02_0271.html)。 **约束限制：** 不涉及 **取值范围：** 账号的项目ID **默认取值：** 不涉及 |
| cluster_id | 是    | String | **参数解释：** 集群ID，获取方式请参见[如何获取接口URI中参数](https://support.huaweicloud.com/api-cce/cce_02_0271.html)。 **约束限制：** 不涉及 **取值范围：** 集群ID **默认取值：** 不涉及    |
   
#### 请求参数
表2请求Body参数 
| 参数         | 是否必选 | 参数类型                                                   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| apiVersion | 是    | String                                                 | **参数解释：** API版本，固定值"v3"，该值不可修改。 **约束限制：** 该值不可修改 **取值范围：** - v3    **默认取值：** v3                               |
| kind       | 是    | String                                                 | **参数解释：** API类型，固定值"PreCheckTask"，该值不可修改。 **约束限制：** 该值不可修改 **取值范围：** - PreCheckTask    **默认取值：** PreCheckTask |
| spec       | 是    | [PrecheckSpec] object | **参数解释：** spec是集合类的元素类型，您对需要升级前检查的配置信息的主体部分都在spec中给出。CCE通过spec的描述来执行检查。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                   |
   
 表3PrecheckSpec 
| 参数                   | 是否必选 | 参数类型                                                                             | 描述                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| clusterID            | 是    | String                                                                           | **参数解释：** 集群ID。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                  |
| clusterVersion       | 是    | String                                                                           | **参数解释：** 集群版本，请填写当前集群的补丁版本，可登录控制台在总览页面进行查看 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及      |
| targetVersion        | 是    | String                                                                           | **参数解释：** 升级目标版本，如果填写大版本，则自动选择最新补丁版本 **约束限制：** 不涉及 **取值范围：** 高于集群当前版本的可用集群版本 **默认取值：** 不涉及 |
| skippedCheckItemList | 否    | Array of [skippedCheckItemList] objects | **参数解释：** 跳过检查的项目列表 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                              |
   
 表4skippedCheckItemList 
| 参数               | 是否必选 | 参数类型                                                           | 描述                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| name             | 否    | String                                                         | **参数解释：** 跳过检查的项目名称 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                   |
| resourceSelector | 否    | [resourceSelector] object | **参数解释：** 资源标签选择器 **约束限制：** 仅节点检查涉及该参数，集群检查和插件检查不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
 表5resourceSelector 
| 参数       | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| key      | 是    | String           | **参数解释：** 标签键值 **约束限制：** 不涉及 **取值范围：** - node.uid：节点UID    **默认取值：** 不涉及 |
| values   | 否    | Array of strings | **参数解释：** 标签值列表 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                      |
| operator | 是    | String           | **参数解释：** 标签逻辑运算符 **约束限制：** 不涉及 **取值范围：** - In    **默认取值：** 不涉及          |
   
#### 响应参数
**状态码：200**
表6响应Body参数 
| 参数         | 参数类型                                                                                        | 描述                                                                                                                                                                        |
|:---|:---|:---|
| apiVersion | String                                                                                      | **参数解释：** API版本 **取值范围：** 不涉及                                                         |
| kind       | String                                                                                      | **参数解释：** 资源类型 **取值范围：** 不涉及                                                          |
| metadata   | [PrecheckCluserResponseMetadata] object | **参数解释：** 升级前检查元数据 **取值范围：** 不涉及                                                      |
| spec       | [PrecheckCluserResponseSpec] object         | **参数解释：** spec是集合类的元素类型，您对需要升级前检查的配置信息的主体部分都在spec中给出。CCE通过spec的描述来执行检查。 **取值范围：** 不涉及 |
| status     | [PrecheckStatus] object                                 | **参数解释：** 集群升级前检查状态 **取值范围：** 不涉及                                                     |
   
 表7PrecheckCluserResponseMetadata 
| 参数  | 参数类型   | 描述                                                                                                                 |
|:---|:---|:---|
| uid | String | **参数解释：** 检查任务ID **取值范围：** 不涉及 |
   
 表8PrecheckCluserResponseSpec 
| 参数                   | 参数类型                                                                                              | 描述                                                                                                                    |
|:---|:---|:---|
| clusterID            | String                                                                                            | **参数解释：** 集群ID **取值范围：** 不涉及      |
| clusterVersion       | String                                                                                            | **参数解释：** 当前集群版本 **取值范围：** 不涉及    |
| targetVersion        | String                                                                                            | **参数解释：** 升级目标版本 **取值范围：** 不涉及    |
| skippedCheckItemList | Array of [skippedCheckItemListResponse] objects | **参数解释：** 跳过检查的项目列表 **取值范围：** 不涉及 |
   
 表9skippedCheckItemListResponse 
| 参数               | 参数类型                                                                            | 描述                                                                                                                                          |
|:---|:---|:---|
| name             | String                                                                          | **参数解释：** 跳过检查的项目名称 **取值范围：** 不涉及                       |
| resourceSelector | [resourceSelectorResponse] object | **参数解释：** 资源标签选择器，仅节点检查涉及该参数，集群检查和插件检查不涉及 **取值范围：** 不涉及 |
   
 表10resourceSelectorResponse 
| 参数       | 参数类型             | 描述                                                                                                                                                                                                                                                           |
|:---|:---|:---|
| key      | String           | **参数解释：** 标签键值 **取值范围：** - node.uid    |
| values   | Array of strings | **参数解释：** 标签值列表 **取值范围：** 不涉及                                                                                                                                            |
| operator | String           | **参数解释：** 标签逻辑运算符 **取值范围：** - In       |
   
 表11PrecheckStatus 
| 参数                 | 参数类型                                                                | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|
| phase              | String                                                              | **参数解释：** 状态 **取值范围：** - Init：初始化   - Running：运行中   - Success：成功   - Failed：失败   - Error：错误    |
| expireTimeStamp    | String                                                              | **参数解释：** 检查结果过期时间 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| message            | String                                                              | **参数解释：** 信息，一般是执行错误的日志信息 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| clusterCheckStatus | [clusterCheckStatus] object | **参数解释：** 集群限制检查状态 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| addonCheckStatus   | [addonCheckStatus] object     | **参数解释：** 插件检查状态 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| nodeCheckStatus    | [nodeCheckStatus] object       | **参数解释：** 节点检查状态 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
 表12clusterCheckStatus 
| 参数          | 参数类型                                                                          | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| phase       | String                                                                        | **参数解释：** 状态 **取值范围：** - Init：初始化   - Running：运行中   - Success：成功   - Failed：失败    |
| itemsStatus | Array of [PreCheckItemStatus] objects | **参数解释：** 检查项状态集合 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   
 表13addonCheckStatus 
| 参数          | 参数类型                                                                          | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| phase       | String                                                                        | **参数解释：** 状态 **取值范围：** - Init：初始化   - Running：运行中   - Success：成功   - Failed：失败    |
| itemsStatus | Array of [PreCheckItemStatus] objects | **参数解释：** 检查项状态集合 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   
 表14nodeCheckStatus 
| 参数              | 参数类型                                                                    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| phase           | String                                                                  | **参数解释：** 状态 **取值范围：** - Init：初始化   - Running：运行中   - Success：成功   - Failed：失败    |
| nodeStageStatus | Array of [NodeStageStatus] objects | **参数解释：** 节点检查状态 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   
 表15NodeStageStatus 
| 参数          | 参数类型                                                                          | 描述                                                                                                                   |
|:---|:---|:---|
| nodeInfo    | [NodeInfo] object                               | **参数解释：** 节点信息。 **取值范围：** 不涉及    |
| itemsStatus | Array of [PreCheckItemStatus] objects | **参数解释：** 检查项状态集合。 **取值范围：** 不涉及 |
   
 表16NodeInfo 
| 参数       | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|
| uid      | String | **参数解释：** 节点UID。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| name     | String | **参数解释：** 节点名称。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| status   | String | **参数解释**： 节点状态 **取值范围**： 节点资源生命周期管理（如安装卸载等）状态和集群内K8s node状态的综合体现，取值如下 - Build：创建中，表示节点正处于创建过程中。   - Installing：安装中，表示节点正处于纳管过程中。   - Upgrading：升级中，表示节点正处于升级过程中。   - Active：运行中，表示节点处于正常状态。   - Abnormal：不可用，表示节点处于异常状态。   - Deleting： 删除中，表示节点正处于删除过程中。   - Error：错误，表示节点处于故障状态。    |
| nodeType | String | **参数解释**： 节点类型 **取值范围**： - BareMetal：裸金属服务器   - VirtualMachine：弹性云服务器                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
 表17PreCheckItemStatus 
| 参数         | 参数类型                                                | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|
| name       | String                                              | **参数解释：** 检查项名称 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| kind       | String                                              | **参数解释：** 检查项类型 **取值范围：** - Exception：异常类，需要用户解决   - Risk：风险类，用户确认后可选择跳过                                                                                                                                                                                                                                                                                                                                                                                       |
| group      | String                                              | **参数解释：** 检查项分组 **取值范围：** - LimitCheck：集群限制检查   - MasterCheck：控制节点检查   - NodeCheck：用户节点检查   - AddonCheck：插件检查   - ExecuteException：检查流程错误    |
| level      | String                                              | **参数解释：** 检查项风险级别 **取值范围：** - Info：提示级别   - Warning：风险级别   - Fatal：严重级别                                                                                                                                                                                                                                                                                  |
| phase      | String                                              | **参数解释：** 状态 **取值范围：** - Init：初始化   - Running：运行中   - Success：成功   - Failed：失败                                                                                                                                                                     |
| message    | String                                              | **参数解释：** 提示信息 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| riskSource | [riskSource] object | **参数解释：** 风险项来源。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| errorCodes | Array of strings                                    | **参数解释：** 错误码集合 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
 表18riskSource 
| 参数                 | 参数类型                                                                          | 描述                                                                                                                   |
|:---|:---|:---|
| configurationRisks | Array of [configurationRisks] objects | **参数解释：** 配置风险项。 **取值范围：** 不涉及   |
| deprecatedAPIRisks | Array of [deprecatedAPIRisks] objects | **参数解释：** 废弃API风险。 **取值范围：** 不涉及 |
| nodeRisks          | Array of [nodeRisks] objects                   | **参数解释：** 节点风险。 **取值范围：** 不涉及    |
| addonRisks         | Array of [addonRisks] objects                 | **参数解释：** 插件风险。 **取值范围：** 不涉及    |
   
 表19configurationRisks 
| 参数            | 参数类型   | 描述                                                                                                                  |
|:---|:---|:---|
| package       | String | **参数解释：** 组件名称。 **取值范围：** 不涉及   |
| sourceFile    | String | **参数解释：** 涉及文件路径。 **取值范围：** 不涉及 |
| nodeMsg       | String | **参数解释：** 节点信息。 **取值范围：** 不涉及   |
| field         | String | **参数解释：** 参数值。 **取值范围：** 不涉及    |
| operation     | String | **参数解释：** 修改操作类型。 **取值范围：** 不涉及 |
| originalValue | String | **参数解释：** 原始值。 **取值范围：** 不涉及    |
| value         | String | **参数解释：** 当前值。 **取值范围：** 不涉及    |
   
 表20deprecatedAPIRisks 
| 参数        | 参数类型   | 描述                                                                                                                                                          |
|:---|:---|:---|
| url       | String | **参数解释：** 请求路径，如/apis/policy/v1beta1/podsecuritypolicies。 **取值范围：** 不涉及 |
| userAgent | String | **参数解释：** 客户端信息。 **取值范围：** 不涉及                                          |
   
 表21nodeRisks 
| 参数     | 参数类型   | 描述                                                                                                                  |
|:---|:---|:---|
| NodeID | String | **参数解释：** 用户节点ID。 **取值范围：** 不涉及 |
   
 表22addonRisks 
| 参数                | 参数类型   | 描述                                                                                                                  |
|:---|:---|:---|
| addonTemplateName | String | **参数解释：** 插件模板名称。 **取值范围：** 不涉及 |
| alias             | String | **参数解释：** 插件别名。 **取值范围：** 不涉及   |
   
#### 请求示例
集群升级前检查请求体
```
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/precheck
{
  "kind" : "PreCheckTask",
  "apiVersion" : "v3",
  "spec" : {
    "clusterID" : "8978deaa-1743-11ee-8e46-0255ac10004c",
    "clusterVersion" : "v1.15.11-r1",
    "targetVersion" : "v1.19.16-r80",
    "skippedCheckItemList" : [ ]
  }
}
```
#### 响应示例
**状态码：200**
执行集群升级前检查成功。
```
{
  "kind" : "PreCheckTask",
  "apiVersion" : "v3",
  "metadata" : {
    "uid" : "9991b45e-a2be-4b49-aca4-50a25fa6f81e"
  },
  "spec" : {
    "clusterID" : "8978deaa-1743-11ee-8e46-0255ac10004c",
    "clusterVersion" : "v1.15.11-r1",
    "targetVersion" : "v1.19.16-r80"
  },
  "status" : {
    "phase" : "Init",
    "clusterCheckStatus" : {
      "phase" : "Init"
    },
    "addonCheckStatus" : {
      "phase" : "Init"
    },
    "nodeCheckStatus" : {
      "phase" : "Init"
    }
  }
}
```
#### 状态码
| 状态码 | 描述           |
|:---|:---|
| 200 | 执行集群升级前检查成功。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-cce/ErrorCode.html)。
