更新时间:2024-11-08 GMT+08:00
分享

集群升级前检查

功能介绍

集群升级前检查

调用方法

请参见如何调用API

URI

POST /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/precheck

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数解释:

项目ID,获取方式请参见如何获取接口URI中参数

约束限制:

不涉及

取值范围:

账号的项目ID

默认取值:

不涉及

cluster_id

String

参数解释:

集群ID,获取方式请参见如何获取接口URI中参数

约束限制:

不涉及

取值范围:

集群ID

默认取值:

不涉及

请求参数

表2 请求Body参数

参数

是否必选

参数类型

描述

apiVersion

String

参数解释:

API版本

约束限制:

固定值

取值范围:

  • v3

kind

String

参数解释:

API类型

约束限制:

固定值

取值范围:

  • PreCheckTask

spec

PrecheckSpec object

参数解释:

spec是集合类的元素类型,您对需要升级前检查的配置信息的主体部分都在spec中给出。CCE通过spec的描述来执行检查。

约束限制:

不涉及

表3 PrecheckSpec

参数

是否必选

参数类型

描述

clusterID

String

参数解释:

集群ID

约束限制:

不涉及

取值范围:

不涉及

clusterVersion

String

参数解释:

集群版本,请填写当前集群的补丁版本,可登录控制台在总览页面进行查看

约束限制:

不涉及

取值范围:

不涉及

targetVersion

String

参数解释:

升级目标版本,如果填写大版本,则自动选择最新补丁版本

约束限制:

不涉及

取值范围:

高于集群当前版本的可用集群版本

skippedCheckItemList

Array of skippedCheckItemList objects

参数解释:

跳过检查的项目列表

约束限制:

不涉及

取值范围:

不涉及

表4 skippedCheckItemList

参数

是否必选

参数类型

描述

name

String

参数解释:

跳过检查的项目名称

约束限制:

不涉及

取值范围:

不涉及

resourceSelector

resourceSelector object

参数解释:

资源标签选择器

约束限制:

仅节点检查涉及该参数,集群检查和插件检查不涉及

取值范围:

不涉及

表5 resourceSelector

参数

是否必选

参数类型

描述

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

集群升级前检查状态

表7 PrecheckCluserResponseMetadata

参数

参数类型

描述

uid

String

检查任务ID

表8 PrecheckCluserResponseSpec

参数

参数类型

描述

clusterID

String

集群ID

clusterVersion

String

当前集群版本

targetVersion

String

升级目标版本

skippedCheckItemList

Array of skippedCheckItemListResponse objects

跳过检查的项目列表

表9 skippedCheckItemListResponse

参数

参数类型

描述

name

String

跳过检查的项目名称

resourceSelector

resourceSelectorResponse object

资源标签选择器,仅节点检查涉及该参数,集群检查和插件检查不涉及

表10 resourceSelectorResponse

参数

参数类型

描述

key

String

标签键值

values

Array of strings

标签值列表

operator

String

标签值

表11 PrecheckStatus

参数

参数类型

描述

phase

String

状态,取值如下

  • Init: 初始化

  • Running 运行中

  • Success 成功

  • Failed 失败

  • Error 错误

expireTimeStamp

String

检查结果过期时间

message

String

信息,一般是执行错误的日志信息

clusterCheckStatus

clusterCheckStatus object

集群限制检查状态

addonCheckStatus

addonCheckStatus object

插件检查状态

nodeCheckStatus

nodeCheckStatus object

节点检查状态

表12 clusterCheckStatus

参数

参数类型

描述

phase

String

状态,取值如下

  • Init: 初始化

  • Running 运行中

  • Success 成功

  • Failed 失败

itemsStatus

Array of PreCheckItemStatus objects

检查项状态集合

表13 addonCheckStatus

参数

参数类型

描述

phase

String

状态,取值如下

  • Init: 初始化

  • Running 运行中

  • Success 成功

  • Failed 失败

itemsStatus

Array of PreCheckItemStatus objects

检查项状态集合

表14 nodeCheckStatus

参数

参数类型

描述

phase

String

状态,取值如下

  • Init: 初始化

  • Running 运行中

  • Success 成功

  • Failed 失败

nodeStageStatus

Array of NodeStageStatus objects

节点检查状态

表15 NodeStageStatus

参数

参数类型

描述

nodeInfo

NodeInfo object

节点信息

itemsStatus

Array of PreCheckItemStatus objects

检查项状态集合

表16 NodeInfo

参数

参数类型

描述

uid

String

节点UID

name

String

节点名称

status

String

状态

nodeType

String

节点类型

表17 PreCheckItemStatus

参数

参数类型

描述

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

错误码集合

表18 riskSource

参数

参数类型

描述

configurationRisks

Array of configurationRisks objects

配置风险项

deprecatedAPIRisks

Array of deprecatedAPIRisks objects

废弃API风险

nodeRisks

Array of nodeRisks objects

节点风险

addonRisks

Array of addonRisks objects

插件风险

表19 configurationRisks

参数

参数类型

描述

package

String

组件名称

sourceFile

String

涉及文件路径

nodeMsg

String

节点信息

field

String

参数值

operation

String

修改操作类型

originalValue

String

原始值

value

String

当前值

表20 deprecatedAPIRisks

参数

参数类型

描述

url

String

请求路径,如/apis/policy/v1beta1/podsecuritypolicies

userAgent

String

客户端信息

表21 nodeRisks

参数

参数类型

描述

NodeID

String

用户节点ID

表22 addonRisks

参数

参数类型

描述

addonTemplateName

String

插件模板名称

alias

String

插件别名

请求示例

集群升级前检查请求体

POST /autopilot/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"
    }
  }
}

SDK代码示例

SDK代码示例如下。

集群升级前检查请求体

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.cce.v3.region.CceRegion;
import com.huaweicloud.sdk.cce.v3.*;
import com.huaweicloud.sdk.cce.v3.model.*;

import java.util.List;
import java.util.ArrayList;

public class CreateAutopilotPreCheckSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");
        String projectId = "{project_id}";

        ICredential auth = new BasicCredentials()
                .withProjectId(projectId)
                .withAk(ak)
                .withSk(sk);

        CceClient client = CceClient.newBuilder()
                .withCredential(auth)
                .withRegion(CceRegion.valueOf("<YOUR REGION>"))
                .build();
        CreateAutopilotPreCheckRequest request = new CreateAutopilotPreCheckRequest();
        request.withClusterId("{cluster_id}");
        PrecheckClusterRequestBody body = new PrecheckClusterRequestBody();
        PrecheckSpec specbody = new PrecheckSpec();
        specbody.withClusterID("8978deaa-1743-11ee-8e46-0255ac10004c")
            .withClusterVersion("v1.15.11-r1")
            .withTargetVersion("v1.19.16-r80");
        body.withSpec(specbody);
        body.withKind("PreCheckTask");
        body.withApiVersion("v3");
        request.withBody(body);
        try {
            CreateAutopilotPreCheckResponse response = client.createAutopilotPreCheck(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}

集群升级前检查请求体

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcce.v3.region.cce_region import CceRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkcce.v3 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.environ["CLOUD_SDK_AK"]
    sk = os.environ["CLOUD_SDK_SK"]
    projectId = "{project_id}"

    credentials = BasicCredentials(ak, sk, projectId)

    client = CceClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(CceRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = CreateAutopilotPreCheckRequest()
        request.cluster_id = "{cluster_id}"
        specbody = PrecheckSpec(
            cluster_id="8978deaa-1743-11ee-8e46-0255ac10004c",
            cluster_version="v1.15.11-r1",
            target_version="v1.19.16-r80"
        )
        request.body = PrecheckClusterRequestBody(
            spec=specbody,
            kind="PreCheckTask",
            api_version="v3"
        )
        response = client.create_autopilot_pre_check(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

集群升级前检查请求体

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    cce "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/region"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")
    projectId := "{project_id}"

    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        WithProjectId(projectId).
        Build()

    client := cce.NewCceClient(
        cce.CceClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.CreateAutopilotPreCheckRequest{}
	request.ClusterId = "{cluster_id}"
	clusterIDSpec:= "8978deaa-1743-11ee-8e46-0255ac10004c"
	clusterVersionSpec:= "v1.15.11-r1"
	targetVersionSpec:= "v1.19.16-r80"
	specbody := &model.PrecheckSpec{
		ClusterID: &clusterIDSpec,
		ClusterVersion: &clusterVersionSpec,
		TargetVersion: &targetVersionSpec,
	}
	request.Body = &model.PrecheckClusterRequestBody{
		Spec: specbody,
		Kind: "PreCheckTask",
		ApiVersion: "v3",
	}
	response, err := client.CreateAutopilotPreCheck(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

200

执行集群升级前检查成功。

错误码

请参见错误码

相关文档