華為云計算 云知識 節(jié)點(diǎn)移除RemoveNode
節(jié)點(diǎn)移除RemoveNode

 

功能介紹

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

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

調(diào)用方法

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

URI

PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/operation/remove

表1 路徑參數(shù)

參數(shù)

是否必選

參數(shù)類型

描述

project_id

String

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

cluster_id

String

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

請求參數(shù)

表2 請求Header參數(shù)

參數(shù)

是否必選

參數(shù)類型

描述

Content-Type

String

消息體的類型(格式)

X-Auth-Token

String

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

表3 請求Body參數(shù)

參數(shù)

是否必選

參數(shù)類型

描述

apiVersion

String

API版本,固定值“v3”。

kind

String

API類型,固定值“RemoveNodesTask”。

spec

RemoveNodesSpec object

配置信息

status

TaskStatus object

任務(wù)狀態(tài)

表4 RemoveNodesSpec

參數(shù)

是否必選

參數(shù)類型

描述

login

Login object

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

nodes

Array of NodeItem objects

待操作節(jié)點(diǎn)列表

表5 Login

參數(shù)

是否必選

參數(shù)類型

描述

sshKey

String

選擇密鑰對方式登錄時的密鑰對名稱。

userPassword

UserPassword object

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

表6 UserPassword

參數(shù)

是否必選

參數(shù)類型

描述

username

String

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

password

String

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

  • 長度為8-26位。

  • 密碼至少必須包含大寫字母、小寫字母、數(shù)字和特殊字符(!@$%^-_=+[{}]:,./?~#*)中的三種。

  • 密碼不能包含用戶名或用戶名的逆序。 創(chuàng)建節(jié)點(diǎn)時password字段需要加鹽加密,具體方法請參見創(chuàng)建節(jié)點(diǎn)時password字段加鹽加密。

表7 NodeItem

參數(shù)

是否必選

參數(shù)類型

描述

uid

String

節(jié)點(diǎn)ID

表8 TaskStatus

參數(shù)

是否必選

參數(shù)類型

描述

jobID

String

任務(wù)ID,供調(diào)用者查詢?nèi)蝿?wù)進(jìn)度。

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

狀態(tài)碼: 200

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

參數(shù)

參數(shù)類型

描述

apiVersion

String

API版本,固定值“v3”。

kind

String

API類型,固定值“RemoveNodesTask”。

spec

RemoveNodesSpec object

配置信息

status

TaskStatus object

任務(wù)狀態(tài)

表10 RemoveNodesSpec

參數(shù)

參數(shù)類型

描述

login

Login object

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

nodes

Array of NodeItem objects

待操作節(jié)點(diǎn)列表

表11 Login

參數(shù)

參數(shù)類型

描述

sshKey

String

選擇密鑰對方式登錄時的密鑰對名稱。

userPassword

UserPassword object

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

表12 UserPassword

參數(shù)

參數(shù)類型

描述

username

String

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

password

String

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

  • 長度為8-26位。

  • 密碼至少必須包含大寫字母、小寫字母、數(shù)字和特殊字符(!@$%^-_=+[{}]:,./?~#*)中的三種。

  • 密碼不能包含用戶名或用戶名的逆序。 創(chuàng)建節(jié)點(diǎn)時password字段需要加鹽加密,具體方法請參見創(chuàng)建節(jié)點(diǎn)時password字段加鹽加密

表13 NodeItem

參數(shù)

參數(shù)類型

描述

uid

String

節(jié)點(diǎn)ID

表14 TaskStatus

參數(shù)

參數(shù)類型

描述

jobID

String

任務(wù)ID,供調(diào)用者查詢?nèi)蝿?wù)進(jìn)度。

請求示例

移除節(jié)點(diǎn)

PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/operation/remove

{
  "spec" : {
    "login" : {
      "sshKey" : "KeyPair-001"
    },
    "nodes" : [ {
      "uid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }, {
      "uid" : "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    } ]
  }
}

響應(yīng)示例

狀態(tài)碼: 200

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

{
  "spec" : {
    "login" : {
      "sshKey" : "KeyPair-001"
    },
    "nodes" : [ {
      "uid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }, {
      "uid" : "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    } ]
  },
  "status" : {
    "jobID" : "2ec9b78d-9368-46f3-8f29-d1a95622a568"
  }
}

SDK代碼示例

SDK代碼示例如下。

  • Java
  • Python
  • Go
  • 更多

移除節(jié)點(diǎn)

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 RemoveNodeSolution {

    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();
        RemoveNodeRequest request = new RemoveNodeRequest();
        request.withClusterId("<cluster_id>");
        RemoveNodesTask body = new RemoveNodesTask();
        List<NodeItem> listSpecNodes = new ArrayList<>();
        listSpecNodes.add(
            new NodeItem()
                .withUid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
        );
        listSpecNodes.add(
            new NodeItem()
                .withUid("yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy")
        );
        Login loginSpec = new Login();
        loginSpec.withSshKey("KeyPair-001");
        RemoveNodesSpec specbody = new RemoveNodesSpec();
        specbody.withLogin(loginSpec)
            .withNodes(listSpecNodes);
        body.withSpec(specbody);
        request.withBody(body);
        try {
            RemoveNodeResponse response = client.removeNode(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)

# 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 = RemoveNodeRequest()
        request.cluster_id = "<cluster_id>"
        listNodesSpec = [
            NodeItem(
                uid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
            ),
            NodeItem(
                uid="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
            )
        ]
        loginSpec = Login(
            ssh_key="KeyPair-001"
        )
        specbody = RemoveNodesSpec(
            login=loginSpec,
            nodes=listNodesSpec
        )
        request.body = RemoveNodesTask(
            spec=specbody
        )
        response = client.remove_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)

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.RemoveNodeRequest{}
	request.ClusterId = "<cluster_id>"
	var listNodesSpec = []model.NodeItem{
        {
            Uid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        },
        {
            Uid: "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
        },
    }
	sshKeyLogin:= "KeyPair-001"
	loginSpec := &model.Login{
		SshKey: &sshKeyLogin,
	}
	specbody := &model.RemoveNodesSpec{
		Login: loginSpec,
		Nodes: listNodesSpec,
	}
	request.Body = &model.RemoveNodesTask{
		Spec: specbody,
	}
	response, err := client.RemoveNode(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

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

狀態(tài)碼

狀態(tài)碼

描述

200

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

錯誤碼

請參見錯誤碼。