華為云計算 云知識 集群升級UpgradeCluster
集群升級UpgradeCluster

 

功能介紹

集群升級。

  • 集群升級涉及多維度的組件升級操作,強(qiáng)烈建議統(tǒng)一通過CCE控制臺執(zhí)行交互式升級,降低集群升級過程的業(yè)務(wù)意外受損風(fēng)險;

  • 當(dāng)前集群升級相關(guān)接口受限開放。

調(diào)用方法

請參見如何調(diào)用API。

URI

POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgrade

表1 路徑參數(shù)

參數(shù)

是否必選

參數(shù)類型

描述

project_id

String

項目ID,獲取方式請參見如何獲取接口URI中參數(shù)。

cluster_id

String

集群ID,獲取方式請參見如何獲取接口URI中參數(shù)

請求參數(shù)

表2 請求Body參數(shù)

參數(shù)

是否必選

參數(shù)類型

描述

metadata

UpgradeClusterRequestMetadata object

升級元數(shù)據(jù)

spec

UpgradeSpec object

升級配置信息

表3 UpgradeClusterRequestMetadata

參數(shù)

是否必選

參數(shù)類型

描述

apiVersion

String

api版本,默認(rèn)為v3

kind

String

資源類型,默認(rèn)為UpgradeTask

表4 UpgradeSpec

參數(shù)

是否必選

參數(shù)類型

描述

clusterUpgradeAction

ClusterUpgradeAction object

集群升級配置

表5 ClusterUpgradeAction

參數(shù)

是否必選

參數(shù)類型

描述

addons

Array of UpgradeAddonConfig objects

插件配置列表

nodeOrder

Map<String,Array<NodePriority>>

節(jié)點(diǎn)池內(nèi)節(jié)點(diǎn)升級順序配置。

說明:

key表示節(jié)點(diǎn)池ID,默認(rèn)節(jié)點(diǎn)池取值為"DefaultPool"

nodePoolOrder

Map<String,Integer>

節(jié)點(diǎn)池升級順序配置,key/value對格式。

說明:

key表示節(jié)點(diǎn)池ID,默認(rèn)節(jié)點(diǎn)池取值為"DefaultPool" value表示對應(yīng)節(jié)點(diǎn)池的優(yōu)先級,默認(rèn)值為0,優(yōu)先級最低,數(shù)值越大優(yōu)先級越高

strategy

UpgradeStrategy object

升級策略

targetVersion

String

目標(biāo)集群版本,例如"v1.23"

表6 UpgradeAddonConfig

參數(shù)

是否必選

參數(shù)類型

描述

addonTemplateName

String

插件名稱

operation

String

執(zhí)行動作,當(dāng)前升級場景支持操作為"patch"

version

String

目標(biāo)插件版本號

values

Object

插件參數(shù)列表,Key:Value格式

表7 NodePriority

參數(shù)

是否必選

參數(shù)類型

描述

nodeSelector

NodeSelector object

節(jié)點(diǎn)標(biāo)簽選擇器,選擇一批節(jié)點(diǎn)

priority

Integer

該批次節(jié)點(diǎn)的優(yōu)先級,默認(rèn)值為0,優(yōu)先級最低,數(shù)值越大優(yōu)先級越高

表8 NodeSelector

參數(shù)

是否必選

參數(shù)類型

描述

key

String

標(biāo)簽鍵

value

Array of strings

標(biāo)簽值列表

operator

String

標(biāo)簽邏輯運(yùn)算符

表9 UpgradeStrategy

參數(shù)

是否必選

參數(shù)類型

描述

type

String

升級策略類型,當(dāng)前僅支持原地升級類型"inPlaceRollingUpdate"

inPlaceRollingUpdate

InPlaceRollingUpdate object

原地升級配置,指定原地升級策略類型時必選。

表10 InPlaceRollingUpdate

參數(shù)

是否必選

參數(shù)類型

描述

userDefinedStep

Integer

節(jié)點(diǎn)升級步長,取值范圍為[1, 40],建議取值20

響應(yīng)參數(shù)

狀態(tài)碼: 200

表11 響應(yīng)Body參數(shù)

參數(shù)

參數(shù)類型

描述

metadata

UpgradeCluserResponseMetadata object

升級任務(wù)元數(shù)據(jù)信息

spec

UpgradeResponseSpec object

升級配置信息

表12 UpgradeCluserResponseMetadata

參數(shù)

參數(shù)類型

描述

uid

String

升級任務(wù)ID,可通過調(diào)用獲取集群升級任務(wù)詳情API查詢進(jìn)展

表13 UpgradeResponseSpec

參數(shù)

參數(shù)類型

描述

clusterUpgradeAction

ClusterUpgradeResponseAction object

集群升級配置

表14 ClusterUpgradeResponseAction

參數(shù)

參數(shù)類型

描述

version

String

當(dāng)前集群版本

targetVersion

String

目標(biāo)集群版本,例如"v1.23"

targetPlatformVersion

String

目標(biāo)集群的平臺版本號,表示集群版本(version)下的內(nèi)部版本,不支持用戶指定。

strategy

UpgradeStrategy object

升級策略

config

Object

升級過程中指定的集群配置

表15 UpgradeStrategy

參數(shù)

參數(shù)類型

描述

type

String

升級策略類型,當(dāng)前僅支持原地升級類型"inPlaceRollingUpdate"

inPlaceRollingUpdate

InPlaceRollingUpdate object

原地升級配置,指定原地升級策略類型時必選。

表16 InPlaceRollingUpdate

參數(shù)

參數(shù)類型

描述

userDefinedStep

Integer

節(jié)點(diǎn)升級步長,取值范圍為[1, 40],建議取值20

請求示例

升級集群至v1.23版本,并設(shè)置節(jié)點(diǎn)升級步長為20。

POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgrade

{
  "metadata" : {
    "apiVersion" : "v3",
    "kind" : "UpgradeTask"
  },
  "spec" : {
    "clusterUpgradeAction" : {
      "strategy" : {
        "type" : "inPlaceRollingUpdate",
        "inPlaceRollingUpdate" : {
          "userDefinedStep" : 20
        }
      },
      "targetVersion" : "v1.23"
    }
  }
}

響應(yīng)示例

狀態(tài)碼: 200

表示集群升級任務(wù)下發(fā)成功。

{
  "metadata" : {
    "uid" : "976a33e2-f545-11ed-87af-0255ac1002c2"
  },
  "spec" : {
    "clusterUpgradeAction" : {
      "version" : "v1.19.16-r20",
      "targetVersion" : "v1.23.8-r0",
      "targetPlatformVersion" : "cce.10",
      "strategy" : {
        "type" : "inPlaceRollingUpdate",
        "inPlaceRollingUpdate" : {
          "userDefinedStep" : 20
        }
      },
      "config" : { }
    }
  }
}

SDK代碼示例

SDK代碼示例如下。

  • Java
  • Python
  • Go
  • 更多

升級集群至v1.23版本,并設(shè)置節(jié)點(diǎn)升級步長為20。

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.*;


public class UpgradeClusterSolution {

    public static void main(String[] args) {
        String ak = "<YOUR AK>";
        String sk = "<YOUR SK>";
        String projectId = "<project_id>";

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

        CceClient client = CceClient.newBuilder()
                .withCredential(auth)
                .withRegion(CceRegion.valueOf("cn-north-4"))
                .build();
        UpgradeClusterRequest request = new UpgradeClusterRequest();
        request.withClusterId("<cluster_id>");
        UpgradeClusterRequestBody body = new UpgradeClusterRequestBody();
        InPlaceRollingUpdate inPlaceRollingUpdateStrategy = new InPlaceRollingUpdate();
        inPlaceRollingUpdateStrategy.withUserDefinedStep(20);
        UpgradeStrategy strategyClusterUpgradeAction = new UpgradeStrategy();
        strategyClusterUpgradeAction.withType("inPlaceRollingUpdate")
            .withInPlaceRollingUpdate(inPlaceRollingUpdateStrategy);
        ClusterUpgradeAction clusterUpgradeActionSpec = new ClusterUpgradeAction();
        clusterUpgradeActionSpec.withStrategy(strategyClusterUpgradeAction)
            .withTargetVersion("v1.23");
        UpgradeSpec specbody = new UpgradeSpec();
        specbody.withClusterUpgradeAction(clusterUpgradeActionSpec);
        UpgradeClusterRequestMetadata metadatabody = new UpgradeClusterRequestMetadata();
        metadatabody.withApiVersion("v3")
            .withKind("UpgradeTask");
        body.withSpec(specbody);
        body.withMetadata(metadatabody);
        request.withBody(body);
        try {
            UpgradeClusterResponse response = client.upgradeCluster(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());
        }
    }
}

升級集群至v1.23版本,并設(shè)置節(jié)點(diǎn)升級步長為20。

# coding: utf-8

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__":
    ak = "<YOUR AK>"
    sk = "<YOUR SK>"
    projectId = "<project_id>"

    credentials = BasicCredentials(ak, sk, projectId) \

    client = CceClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(CceRegion.value_of("cn-north-4")) \
        .build()

    try:
        request = UpgradeClusterRequest()
        request.cluster_id = "<cluster_id>"
        inPlaceRollingUpdateStrategy = InPlaceRollingUpdate(
            user_defined_step=20
        )
        strategyClusterUpgradeAction = UpgradeStrategy(
            type="inPlaceRollingUpdate",
            in_place_rolling_update=inPlaceRollingUpdateStrategy
        )
        clusterUpgradeActionSpec = ClusterUpgradeAction(
            strategy=strategyClusterUpgradeAction,
            target_version="v1.23"
        )
        specbody = UpgradeSpec(
            cluster_upgrade_action=clusterUpgradeActionSpec
        )
        metadatabody = UpgradeClusterRequestMetadata(
            api_version="v3",
            kind="UpgradeTask"
        )
        request.body = UpgradeClusterRequestBody(
            spec=specbody,
            metadata=metadatabody
        )
        response = client.upgrade_cluster(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

升級集群至v1.23版本,并設(shè)置節(jié)點(diǎn)升級步長為20。

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() {
    ak := "<YOUR AK>"
    sk := "<YOUR SK>"
    projectId := "<project_id>"

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

    client := cce.NewCceClient(
        cce.CceClientBuilder().
            WithRegion(region.ValueOf("cn-north-4")).
            WithCredential(auth).
            Build())

    request := &model.UpgradeClusterRequest{}
	request.ClusterId = "<cluster_id>"
	userDefinedStepInPlaceRollingUpdate:= int32(20)
	inPlaceRollingUpdateStrategy := &model.InPlaceRollingUpdate{
		UserDefinedStep: &userDefinedStepInPlaceRollingUpdate,
	}
	strategyClusterUpgradeAction := &model.UpgradeStrategy{
		Type: "inPlaceRollingUpdate",
		InPlaceRollingUpdate: inPlaceRollingUpdateStrategy,
	}
	clusterUpgradeActionSpec := &model.ClusterUpgradeAction{
		Strategy: strategyClusterUpgradeAction,
		TargetVersion: "v1.23",
	}
	specbody := &model.UpgradeSpec{
		ClusterUpgradeAction: clusterUpgradeActionSpec,
	}
	metadatabody := &model.UpgradeClusterRequestMetadata{
		ApiVersion: "v3",
		Kind: "UpgradeTask",
	}
	request.Body = &model.UpgradeClusterRequestBody{
		Spec: specbody,
		Metadata: metadatabody,
	}
	response, err := client.UpgradeCluster(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多編程語言的SDK代碼示例,請參見API Explorer的代碼示例頁簽,可生成自動對應(yīng)的SDK代碼示例。

狀態(tài)碼

狀態(tài)碼

描述

200

表示集群升級任務(wù)下發(fā)成功。

錯誤碼

請參見錯誤碼。