華為云計(jì)算 云知識(shí) 重置節(jié)點(diǎn)ResetNode
重置節(jié)點(diǎn)ResetNode

 

功能介紹

該API用于在指定集群下重置節(jié)點(diǎn)。

集群管理的URL格式為:https://Endpoint/uri。其中uri為資源路徑,也即API訪問的路徑。

調(diào)用方法

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

URI

POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/reset

表1 路徑參數(shù)

參數(shù)

是否必選

參數(shù)類型

描述

project_id

String

項(xiàng)目ID,獲取方式請(qǐng)參見如何獲取接口URI中參數(shù)

cluster_id

String

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

請(qǐng)求參數(shù)

表2 請(qǐng)求Header參數(shù)

參數(shù)

是否必選

參數(shù)類型

描述

Content-Type

String

消息體的類型(格式)

X-Auth-Token

String

調(diào)用接口的認(rèn)證方式分為Token和AK/SK兩種,如果您使用的Token方式,此參數(shù)為必填,請(qǐng)?zhí)顚慣oken的值,獲取方式請(qǐng)參見獲取token

表3 請(qǐng)求Body參數(shù)

參數(shù)

是否必選

參數(shù)類型

描述

apiVersion

String

API版本,固定值“v3”。

kind

String

API類型,固定值“List”。

nodeList

Array of ResetNode objects

重置節(jié)點(diǎn)列表

表4 ResetNode

參數(shù)

是否必選

參數(shù)類型

描述

nodeID

String

節(jié)點(diǎn)ID,獲取方式請(qǐng)參見如何獲取接口URI中參數(shù)。

spec

ReinstallNodeSpec object

節(jié)點(diǎn)重裝配置參數(shù)。節(jié)點(diǎn)池內(nèi)節(jié)點(diǎn)不支持外部指定,將以節(jié)點(diǎn)池配置進(jìn)行重裝,默認(rèn)節(jié)點(diǎn)池中節(jié)點(diǎn)此參數(shù)必選。

表5 ReinstallNodeSpec

參數(shù)

是否必選

參數(shù)類型

描述

os

String

操作系統(tǒng)。指定自定義 鏡像 場(chǎng)景將以IMS鏡像的實(shí)際操作系統(tǒng)版本為準(zhǔn)。請(qǐng)選擇當(dāng)前集群支持的操作系統(tǒng)版本,例如EulerOS 2.5、CentOS 7.6、EulerOS 2.8。

login

Login object

節(jié)點(diǎn)的登錄方式。密鑰對(duì)和密碼登錄方式二者必選其一。

name

String

節(jié)點(diǎn)名稱

說明:

重裝時(shí)指定將修改節(jié)點(diǎn)名稱,且服務(wù)器名稱會(huì)同步修改。默認(rèn)以服務(wù)器當(dāng)前名稱作為節(jié)點(diǎn)名稱。 命名規(guī)則:以小寫字母開頭,由小寫字母、數(shù)字、中劃線(-)組成,長度范圍1-56位。

serverConfig

ReinstallServerConfig object

服務(wù)器配置

volumeConfig

ReinstallVolumeConfig object

卷管理配置

runtimeConfig

ReinstallRuntimeConfig object

容器運(yùn)行時(shí)配置

k8sOptions

ReinstallK8sOptionsConfig object

Kubernetes節(jié)點(diǎn)配置

lifecycle

NodeLifecycleConfig object

節(jié)點(diǎn)自定義生命周期配置

initializedConditions

Array of strings

自定義初始化標(biāo)記。

CCE節(jié)點(diǎn)在初始化完成之前,會(huì)打上初始化未完成污點(diǎn)(node.cloudprovider.kubernetes.io/uninitialized)防止pod調(diào)度到節(jié)點(diǎn)上。

cce支持自定義初始化標(biāo)記,在接收到initializedConditions參數(shù)后,會(huì)將參數(shù)值轉(zhuǎn)換成節(jié)點(diǎn)標(biāo)簽,隨節(jié)點(diǎn)下發(fā),例如:cloudprovider.openvessel.io/inject-initialized-conditions=CCEInitial_CustomedInitial。

當(dāng)節(jié)點(diǎn)上設(shè)置了此標(biāo)簽,會(huì)輪詢節(jié)點(diǎn)的status.Conditions,查看conditions的type是否存在標(biāo)記名,如CCEInitial、CustomedInitial標(biāo)記,如果存在所有傳入的標(biāo)記,且狀態(tài)為True,認(rèn)為節(jié)點(diǎn)初始化完成,則移除初始化污點(diǎn)。

  • 必須以字母、數(shù)字組成,長度范圍1-20位。
  • 標(biāo)記數(shù)量不超過2個(gè)

extendParam

ReinstallExtendParam object

重裝拓展參數(shù),已廢棄

表6 Login

參數(shù)

是否必選

參數(shù)類型

描述

sshKey

String

選擇密鑰對(duì)方式登錄時(shí)的密鑰對(duì)名稱。

userPassword

UserPassword object

選擇密碼方式登錄時(shí)的帳號(hào)密碼信息,之后可通過此帳號(hào)密碼登錄節(jié)點(diǎn)。

表7 UserPassword

參數(shù)

是否必選

參數(shù)類型

描述

username

String

登錄帳號(hào),默認(rèn)為“root”

password

String

登錄密碼,若創(chuàng)建節(jié)點(diǎn)通過用戶名密碼方式,即使用該字段,則響應(yīng)體中該字段作屏蔽展示。 密碼復(fù)雜度要求:

  • 長度為8-26位。
  • 密碼至少必須包含大寫字母、小寫字母、數(shù)字和特殊字符(!@$%^-_=+[{}]:,./?~#*)中的三種。
  • 密碼不能包含用戶名或用戶名的逆序。 創(chuàng)建節(jié)點(diǎn)時(shí)password字段需要加鹽加密,具體方法請(qǐng)參見創(chuàng)建節(jié)點(diǎn)時(shí)password字段加鹽加密。
表8 ReinstallServerConfig

參數(shù)

是否必選

參數(shù)類型

描述

userTags

Array of UserTag objects

云服務(wù)器 標(biāo)簽,鍵必須唯一,CCE支持的最大用戶自定義標(biāo)簽數(shù)量依region而定,自定義標(biāo)簽數(shù)上限為5個(gè)。

rootVolume

ReinstallVolumeSpec object

系統(tǒng)盤重裝配置

表9 UserTag

參數(shù)

是否必選

參數(shù)類型

描述

key

String

云服務(wù)器標(biāo)簽的鍵。不得以"CCE-"或"__type_baremetal"開頭

value

String

云服務(wù)器標(biāo)簽的值

表10 ReinstallVolumeSpec

參數(shù)

是否必選

參數(shù)類型

描述

imageID

String

用戶自定義鏡像ID

cmkID

String

用戶主密鑰ID。默認(rèn)為空時(shí),表示 云硬盤 不加密。

表11 ReinstallVolumeConfig

參數(shù)

是否必選

參數(shù)類型

lvmConfig

String

storage

Storage object

表12 Storage

參數(shù)

是否必選

參數(shù)類型

描述

storageSelectors

Array of StorageSelectors objects

磁盤選擇,根據(jù)matchLabels和storageType對(duì)匹配的磁盤進(jìn)行管理。磁盤匹配存在先后順序,靠前的匹配規(guī)則優(yōu)先匹配。

storageGroups

Array of StorageGroups objects

由多個(gè)存儲(chǔ)設(shè)備組成的存儲(chǔ)組,用于各個(gè)存儲(chǔ)空間的劃分。

表13 StorageSelectors

參數(shù)

是否必選

參數(shù)類型

描述

name

String

selector的名字,作為storageGroup中selectorNames的索引,因此各個(gè)selector間的名字不能重復(fù)。

storageType

String

存儲(chǔ)類型,當(dāng)前僅支持evs(云硬盤)或local(本地盤);local存儲(chǔ)類型不支持磁盤選擇,所有本地盤將被組成一個(gè)VG,因此也僅允許只有一個(gè)local類型的storageSelector。

matchLabels

matchLabels object

evs盤的匹配字段,支持DataVolume中的size、volumeType、metadataEncrypted、metadataCmkid、count五個(gè)字段。

表14 matchLabels

參數(shù)

是否必選

參數(shù)類型

描述

size

String

匹配的磁盤大小,不填則無磁盤大小限制。例如:100.

volumeType

String

云硬盤類型,目前支持SSD\GPSSD\SAS\ESSD\SATA等。

metadataEncrypted

String

磁盤加密標(biāo)識(shí)符,0代表不加密,1代表加密。

metadataCmkid

String

加密磁盤的用戶主密鑰ID,長度為36字節(jié)的字符串。

count

String

磁盤選擇個(gè)數(shù),不填則選擇所有此類磁盤。

表15 StorageGroups

參數(shù)

是否必選

參數(shù)類型

描述

name

String

storageGroups的名字,作為虛擬存儲(chǔ)組的名字,因此各個(gè)group名字不能重復(fù)。

說明:

|

  • 當(dāng)cceManaged=ture時(shí),name必須為:vgpass。
  • 當(dāng)數(shù)據(jù)盤作為臨時(shí)存儲(chǔ)卷時(shí):name必須為:vg-everest-localvolume-ephemeral。
  • 當(dāng)數(shù)據(jù)盤作為持久存儲(chǔ)卷時(shí):name必須為:vg-everest-localvolume-persistent。

cceManaged

Boolean

k8s及runtime所屬存儲(chǔ)空間。有且僅有一個(gè)group被設(shè)置為true,不填默認(rèn)false。

selectorNames

Array of strings

對(duì)應(yīng)storageSelectors中的name,一個(gè)group可選擇多個(gè)selector;但一個(gè)selector只能被一個(gè)group選擇。

virtualSpaces

Array of VirtualSpace objects

group中空間配置的詳細(xì)管理。

表16 VirtualSpace

參數(shù)

是否必選

參數(shù)類型

描述

name

String

virtualSpace的名稱,當(dāng)前僅支持三種類型:kubernetes、runtime、user。

  • kubernetes:k8s空間配置,需配置lvmConfig;
  • runtime:運(yùn)行時(shí)空間配置,需配置runtimeConfig;
  • user:用戶空間配置,需配置lvmConfig

size

String

virtualSpace的大小,僅支持整數(shù)百分比。例如:90%。

說明:

一個(gè)group中所有virtualSpace的百分比之和不得超過100%

lvmConfig

LVMConfig object

lvm配置管理,適用于kubernetes和user空間配置。 需要注意:一個(gè)virtualSpace僅支持一個(gè)config配置。

runtimeConfig

RuntimeConfig object

runtime配置管理,適用于運(yùn)行時(shí)空間配置。 需要注意:一個(gè)virtualSpace僅支持一個(gè)config配置。

表17 LVMConfig

參數(shù)

是否必選

參數(shù)類型

描述

lvType

String

LVM寫入模式:linear、striped。linear:線性模式;striped:條帶模式,使用多塊磁盤組成條帶模式,能夠提升磁盤性能。

path

String

磁盤掛載路徑。僅在用戶配置中生效。支持包含:數(shù)字、大小寫字母、點(diǎn)、中劃線、下劃線的絕對(duì)路徑。

表18 RuntimeConfig

參數(shù)

是否必選

參數(shù)類型

描述

lvType

String

LVM寫入模式:linear、striped。linear:線性模式;striped:條帶模式,使用多塊磁盤組成條帶模式,能夠提升磁盤性能。

表19 ReinstallRuntimeConfig

參數(shù)

是否必選

參數(shù)類型

描述

dockerBaseSize

Integer

節(jié)點(diǎn)上單容器的可用磁盤空間大小,單位G。

不配置該值或值為0時(shí)將使用默認(rèn)值,Devicemapper模式下默認(rèn)值為10;OverlayFS模式默認(rèn)不限制單容器可用空間大小,且dockerBaseSize設(shè)置僅在新版本集群的EulerOS和HCE節(jié)點(diǎn)上生效。

CCE節(jié)點(diǎn)容器運(yùn)行時(shí)空間配置請(qǐng)參考數(shù)據(jù)盤空間分配說明。

Devicemapper模式下建議dockerBaseSize配置不超過80G,設(shè)置過大時(shí)可能會(huì)導(dǎo)致容器運(yùn)行時(shí)初始化時(shí)間過長而啟動(dòng)失敗,若對(duì)容器磁盤大小有特殊要求,可考慮使用掛載外部或本地存儲(chǔ)方式代替。

runtime

Runtime object

容器運(yùn)行時(shí), 默認(rèn)場(chǎng)景:

  • 1.25以下集群:默認(rèn)為"docker"
  • 1.25及以上集群,隨操作系統(tǒng)變化,默認(rèn)的容器運(yùn)行時(shí)不同:操作系統(tǒng)為歐拉2.5、歐拉2.8的節(jié)點(diǎn)默認(rèn)為"docker",其余操作系統(tǒng)的節(jié)點(diǎn)默認(rèn)為"containerd"
表20 Runtime

參數(shù)

是否必選

參數(shù)類型

描述

name

String

容器運(yùn)行時(shí),默認(rèn)場(chǎng)景:

  • v1.25以下集群:默認(rèn)為"docker"
  • v1.25及以上集群,隨操作系統(tǒng)變化,默認(rèn)的容器運(yùn)行時(shí)不同:操作系統(tǒng)為EulerOS 2.5、EulerOS 2.8的節(jié)點(diǎn)默認(rèn)為"docker",其余操作系統(tǒng)的節(jié)點(diǎn)默認(rèn)為"containerd"
表21 ReinstallK8sOptionsConfig

參數(shù)

是否必選

參數(shù)類型

描述

labels

Map<String,String>

格式為key/value鍵值對(duì)。鍵值對(duì)個(gè)數(shù)不超過20條。

  • Key:必須以字母或數(shù)字開頭,可以包含字母、數(shù)字、連字符、下劃線和點(diǎn),最長63個(gè)字符;另外可以使用DNS子域作為前綴,例如example.com/my-key,DNS子域最長253個(gè)字符。
  • Value:可以為空或者非空字符串,非空字符串必須以字符或數(shù)字開頭,可以包含字母、數(shù)字、連字符、下劃線和點(diǎn),最長63個(gè)字符。

示例:

"k8sTags": {
  "key": "value"
}

taints

Array of Taint objects

支持給創(chuàng)建出來的節(jié)點(diǎn)加Taints來設(shè)置反親和性,taints配置不超過20條。每條Taints包含以下3個(gè)參數(shù):

  • Key:必須以字母或數(shù)字開頭,可以包含字母、數(shù)字、連字符、下劃線和點(diǎn),最長63個(gè)字符;另外可以使用DNS子域作為前綴。
  • Value:必須以字符或數(shù)字開頭,可以包含字母、數(shù)字、連字符、下劃線和點(diǎn),最長63個(gè)字符。
  • Effect:只可選NoSchedule,PreferNoSchedule或NoExecute。

示例:

"taints": [{
  "key": "status",
  "value": "unavailable",
  "effect": "NoSchedule"
}, {
  "key": "looks",
  "value": "bad",
  "effect": "NoSchedule"
}]

maxPods

Integer

節(jié)點(diǎn)最大允許創(chuàng)建的實(shí)例數(shù)(Pod),該數(shù)量包含系統(tǒng)默認(rèn)實(shí)例,取值范圍為16~256。 該設(shè)置的目的為防止節(jié)點(diǎn)因管理過多實(shí)例而負(fù)載過重,請(qǐng)根據(jù)您的業(yè)務(wù)需要進(jìn)行設(shè)置。

nicMultiqueue

String

  • 彈性網(wǎng)卡隊(duì)列數(shù)配置,默認(rèn)配置示例如下:
"[{\"queue\":4}]"

包含如下字段:

  • queue: 彈性網(wǎng)卡隊(duì)列數(shù)。
  • 僅在turbo集群的BMS節(jié)點(diǎn)時(shí),該字段才可配置。
  • 當(dāng)前支持可配置隊(duì)列數(shù)以及彈性網(wǎng)卡數(shù):{"1":128, "2":92, "4":92, "8":32, "16":16,"28":9}, 既1彈性網(wǎng)卡隊(duì)列可綁定128張彈性網(wǎng)卡,2隊(duì)列彈性網(wǎng)卡可綁定92張,以此類推。
  • 彈性網(wǎng)卡隊(duì)列數(shù)越多,性能越強(qiáng),但可綁定彈性網(wǎng)卡數(shù)越少,請(qǐng)根據(jù)您的需求進(jìn)行配置(創(chuàng)建后不可修改)。

nicThreshold

String

  • 彈性網(wǎng)卡預(yù)綁定比例配置,默認(rèn)配置示例如下:
"0.3:0.6"
  • 第一位小數(shù):預(yù)綁定低水位,彈性網(wǎng)卡預(yù)綁定的最低比例(最小預(yù)綁定彈性網(wǎng)卡數(shù) = ?節(jié)點(diǎn)的總彈性網(wǎng)卡數(shù) * 預(yù)綁定低水位?)
  • 第二位小數(shù):預(yù)綁定高水位,彈性網(wǎng)卡預(yù)綁定的最高比例(最大預(yù)綁定彈性網(wǎng)卡數(shù) = ?節(jié)點(diǎn)的總彈性網(wǎng)卡數(shù) * 預(yù)綁定高水位?)
  • BMS節(jié)點(diǎn)上綁定的彈性網(wǎng)卡數(shù):Pod正在使用的彈性網(wǎng)卡數(shù) + 最小預(yù)綁定彈性網(wǎng)卡數(shù) < BMS節(jié)點(diǎn)上綁定的彈性網(wǎng)卡數(shù) < Pod正在使用的彈性網(wǎng)卡數(shù) + 最大預(yù)綁定彈性網(wǎng)卡數(shù)
  • BMS節(jié)點(diǎn)上當(dāng)預(yù)綁定彈性網(wǎng)卡數(shù) < 最小預(yù)綁定彈性網(wǎng)卡數(shù)時(shí):會(huì)綁定彈性網(wǎng)卡,使得預(yù)綁定彈性網(wǎng)卡數(shù) = 最小預(yù)綁定彈性網(wǎng)卡數(shù)
  • BMS節(jié)點(diǎn)上當(dāng)預(yù)綁定彈性網(wǎng)卡數(shù) > 最大預(yù)綁定彈性網(wǎng)卡數(shù)時(shí):會(huì)定時(shí)解綁彈性網(wǎng)卡(約2分鐘一次),直到預(yù)綁定彈性網(wǎng)卡數(shù) = 最大預(yù)綁定彈性網(wǎng)卡數(shù)
  • 取值范圍:[0.0, 1.0]; 一位小數(shù); 低水位 <= 高水位
  • 僅在turbo集群的BMS節(jié)點(diǎn)時(shí),該字段才可配置。
  • 彈性網(wǎng)卡預(yù)綁定能加快工作負(fù)載的創(chuàng)建,但會(huì)占用IP,請(qǐng)根據(jù)您的需求進(jìn)行配置。
表22 Taint

參數(shù)

是否必選

參數(shù)類型

描述

key

String

value

String

effect

String

作用效果

表23 NodeLifecycleConfig

參數(shù)

是否必選

參數(shù)類型

描述

preInstall

String

安裝前執(zhí)行腳本

說明:

輸入的值需要經(jīng)過Base64編碼,方法為echo -n "待編碼內(nèi)容" | base64。

postInstall

String

安裝后執(zhí)行腳本

說明:

輸入的值需要經(jīng)過Base64編碼,方法為echo -n "待編碼內(nèi)容" | base64。

表24 ReinstallExtendParam

參數(shù)

是否必選

參數(shù)類型

描述

alpha.cce/NodeImageID

String

指定待切換目標(biāo)操作系統(tǒng)所使用的用戶鏡像ID,已廢棄。 指定此參數(shù)等價(jià)于指定ReinstallVolumeSpec中imageID,原取值將被覆蓋。

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

狀態(tài)碼: 200

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

參數(shù)

參數(shù)類型

描述

jobid

String

提交任務(wù)成功后返回的任務(wù)ID,用戶可以使用該ID對(duì)任務(wù)執(zhí)行情況進(jìn)行查詢。

請(qǐng)求示例

  • 重置默認(rèn)節(jié)點(diǎn)池中節(jié)點(diǎn),操作系統(tǒng)為EulerOS 2.5。
    POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/reset
    
    {
      "kind" : "List",
      "apiVersion" : "v3",
      "nodeList" : [ {
        "nodeID" : "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
        "spec" : {
          "name" : "my-ecs-0001",
          "os" : "EulerOS 2.5",
          "login" : {
            "sshKey" : "KeyPair-001"
          }
        }
      } ]
    }
  • 重置節(jié)點(diǎn)池中節(jié)點(diǎn)(spec參數(shù)無效)
    POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/reset
    
    {
      "kind" : "List",
      "apiVersion" : "v3",
      "nodeList" : [ {
        "nodeID" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "spec" : {
          "name" : "my-ecs-0001",
          "os" : "EulerOS 2.5",
          "login" : {
            "sshKey" : "KeyPair-001"
          }
        }
      } ]
    }

響應(yīng)示例

狀態(tài)碼: 200

表示在指定集群下重置節(jié)點(diǎn)的作業(yè)下發(fā)成功。

{
  "jobid" : "2ec9b78d-9368-46f3-8f29-d1a95622a568"
}

SDK代碼示例

SDK代碼示例如下。

  • Java
  • Python
  • Go
  • 更多
  • 重置默認(rèn)節(jié)點(diǎn)池中節(jié)點(diǎn),操作系統(tǒng)為EulerOS 2.5。
    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.UUID;
    import java.util.List;
    import java.util.ArrayList;
    
    public class ResetNodeSolution {
    
        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();
            ResetNodeRequest request = new ResetNodeRequest();
            request.withClusterId("<cluster_id>");
            ResetNodeList body = new ResetNodeList();
            Login loginSpec = new Login();
            loginSpec.withSshKey("KeyPair-001");
            ReinstallNodeSpec specNodeList = new ReinstallNodeSpec();
            specNodeList.withOs("EulerOS 2.5")
                .withLogin(loginSpec)
                .withName("my-ecs-0001");
            List<ResetNode> listbodyNodeList = new ArrayList<>();
            listbodyNodeList.add(
                new ResetNode()
                    .withNodeID(UUID.fromString("yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"))
                    .withSpec(specNodeList)
            );
            body.withNodeList(listbodyNodeList);
            body.withKind("List");
            body.withApiVersion("v3");
            request.withBody(body);
            try {
                ResetNodeResponse response = client.resetNode(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());
            }
        }
    }
  • 重置節(jié)點(diǎn)池中節(jié)點(diǎn)(spec參數(shù)無效)
    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.UUID;
    import java.util.List;
    import java.util.ArrayList;
    
    public class ResetNodeSolution {
    
        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();
            ResetNodeRequest request = new ResetNodeRequest();
            request.withClusterId("<cluster_id>");
            ResetNodeList body = new ResetNodeList();
            Login loginSpec = new Login();
            loginSpec.withSshKey("KeyPair-001");
            ReinstallNodeSpec specNodeList = new ReinstallNodeSpec();
            specNodeList.withOs("EulerOS 2.5")
                .withLogin(loginSpec)
                .withName("my-ecs-0001");
            List<ResetNode> listbodyNodeList = new ArrayList<>();
            listbodyNodeList.add(
                new ResetNode()
                    .withNodeID(UUID.fromString("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"))
                    .withSpec(specNodeList)
            );
            body.withNodeList(listbodyNodeList);
            body.withKind("List");
            body.withApiVersion("v3");
            request.withBody(body);
            try {
                ResetNodeResponse response = client.resetNode(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());
            }
        }
    }
  • 重置默認(rèn)節(jié)點(diǎn)池中節(jié)點(diǎn),操作系統(tǒng)為EulerOS 2.5。
    # 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 = ResetNodeRequest()
            request.cluster_id = "<cluster_id>"
            loginSpec = Login(
                ssh_key="KeyPair-001"
            )
            specNodeList = ReinstallNodeSpec(
                os="EulerOS 2.5",
                login=loginSpec,
                name="my-ecs-0001"
            )
            listNodeListbody = [
                ResetNode(
                    node_id="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
                    spec=specNodeList
                )
            ]
            request.body = ResetNodeList(
                node_list=listNodeListbody,
                kind="List",
                api_version="v3"
            )
            response = client.reset_node(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
  • 重置節(jié)點(diǎn)池中節(jié)點(diǎn)(spec參數(shù)無效)
    # 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 = ResetNodeRequest()
            request.cluster_id = "<cluster_id>"
            loginSpec = Login(
                ssh_key="KeyPair-001"
            )
            specNodeList = ReinstallNodeSpec(
                os="EulerOS 2.5",
                login=loginSpec,
                name="my-ecs-0001"
            )
            listNodeListbody = [
                ResetNode(
                    node_id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                    spec=specNodeList
                )
            ]
            request.body = ResetNodeList(
                node_list=listNodeListbody,
                kind="List",
                api_version="v3"
            )
            response = client.reset_node(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
  • 重置默認(rèn)節(jié)點(diǎn)池中節(jié)點(diǎn),操作系統(tǒng)為EulerOS 2.5。
    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.ResetNodeRequest{}
    	request.ClusterId = "<cluster_id>"
    	sshKeyLogin:= "KeyPair-001"
    	loginSpec := &model.Login{
    		SshKey: &sshKeyLogin,
    	}
    	nameSpec:= "my-ecs-0001"
    	specNodeList := &model.ReinstallNodeSpec{
    		Os: "EulerOS 2.5",
    		Login: loginSpec,
    		Name: &nameSpec,
    	}
    	var listNodeListbody = []model.ResetNode{
            {
                NodeID: "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
                Spec: specNodeList,
            },
        }
    	request.Body = &model.ResetNodeList{
    		NodeList: listNodeListbody,
    		Kind: "List",
    		ApiVersion: "v3",
    	}
    	response, err := client.ResetNode(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
  • 重置節(jié)點(diǎn)池中節(jié)點(diǎn)(spec參數(shù)無效)
    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.ResetNodeRequest{}
    	request.ClusterId = "<cluster_id>"
    	sshKeyLogin:= "KeyPair-001"
    	loginSpec := &model.Login{
    		SshKey: &sshKeyLogin,
    	}
    	nameSpec:= "my-ecs-0001"
    	specNodeList := &model.ReinstallNodeSpec{
    		Os: "EulerOS 2.5",
    		Login: loginSpec,
    		Name: &nameSpec,
    	}
    	var listNodeListbody = []model.ResetNode{
            {
                NodeID: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                Spec: specNodeList,
            },
        }
    	request.Body = &model.ResetNodeList{
    		NodeList: listNodeListbody,
    		Kind: "List",
    		ApiVersion: "v3",
    	}
    	response, err := client.ResetNode(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }

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

狀態(tài)碼

狀態(tài)碼

描述

200

表示在指定集群下重置節(jié)點(diǎn)的作業(yè)下發(fā)成功。

錯(cuò)誤碼

請(qǐng)參見錯(cuò)誤碼