容器服务Open API Python SDK使用详解

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 阿里云容器服务公测也有一段时间了,这期间接触到不少用户反馈,不知道如何使用openapi进行相关的容器开发。这里我们就准备一篇关于如何使用容器服务openapi进行开发的教程,来讲解容器服务目前已公开的api接口。这里我们不打算自行实现openapi,而采用目前已有的sdk来说明,有兴趣的朋友,也.

阿里云容器服务公测也有一段时间了,这期间接触到不少用户反馈,不知道如何使用openapi进行相关的容器开发。这里我们就准备一篇关于如何使用容器服务Open API进行开发的教程,来讲解容器服务目前已公开的api接口。这里我们不打算自行实现Open API,而采用目前已有的sdk来说明,有兴趣的朋友,也可以尝试在API的接触上自行封装实现SDK。

在本教程过程中,如未特别说明,使用的Python 版本为2.7.10,操作系统为ubuntu 14.04 64位

环境准备

首先我们需要安装sdk的核心库以及容器服务

sudo pip install aliyun-python-sdk-core
sudo pip install aliyun-python-sdk-cs

创建集群

完成准备工作以后,接下来,我们就不如正题了,来讲解第一个api,创建集群。具体关于API的参数细节,可以参考文档

示例代码如下:

from aliyunsdkcore.client import AcsClient
from aliyunsdkcs.request.v20151215 import CreateClusterRequest
import json


client = AcsClient('<Your-Access-Key-Id>', '<Your-AccessKeySecret>', '<Region-Id>')

req = CreateClusterRequest.CreateClusterRequest()
request_body=  '''
        {
            "password": "<ECS SSH 密码,需要符合ECS密码规范>",
            "instance_type": "<ECS 实例类型>",
            "name": "<集群名称>",
            "size": <集群包含的节点数量,公测期间最大是10>,
            "network_mode": "<网络类型,可以选择classic or vpc>",
            "data_disk_category": "<磁盘类型,需要根据具体的实例类型确定>",
            "data_disk_size": <磁盘大小,需要根据具体的示例类型确定>,
            "ecs_image_id": "<镜像ID,具体参考文档中关于镜像的说明>"
        }'''
req.set_content(request_body)
req.add_header('X-Acs-Region-Id', '<Region-Id>')
status, header, res = self.client.get_response(req)
if status == 202:
    js = json.loads(res)
    print js['cluster_id']

代码说明:

  • 由于集群创建是异步进行的,所以当服务端接收到客户端的请求以后,就会返回http code 202,同时返回一个json串,里边包含cluster_id和request_id。
  • 当返回的http code 不为202的时候,则会返回一个json串,里边包含了code,message,requestId等字段

获取集群列表

当集群创建完成以后,我们可以通过控制台或者API查询账号下的集群信息。在获取集群列表的API中也可以指定集群的名称进行精确匹配。详解涉及细节请参考查询集群列表文档

示例代码如下:

from aliyunsdkcs.request.v20151215 import DescribeClustersRequest
from aliyunsdkcore.client import AcsClient
import json


client = AcsClient('<Your-Access-Key-Id>', '<Your-AccessKeySecret>', '<Region-Id>')
req = DescribeClustersRequest.DescribeClustersRequest()
req.set_Name('<集群名称,也可以不设置>')
status, header, resp = client.get_response(req)
if status == 200:
    js = json.loads(resp)
    print js

代码说明:

  • req.set_Name('<集群名称>') 这行代码可以不加,如果忽略的话,则会显示该用户下所有的集群实例列表;若添加,则仅精确匹配该集群名称的集群实例
  • status == 200 的时候表示服务器返回成功,resp中包含集群相关的字段
  • 当status != 200的时候,则会返回一个失败的json串,里边包含了code,message,requestId等字段

获取集群详情

在很多场景下,我们需要获取某个集群的详细信息,此时则可以通过集群详情的API来实现,通过集群的ID来查询集群的详情,具体可以参考获取集群详情文档

示例代码如下:

from aliyunsdkcs.request.v20151215 import DescribeClusterDetailRequest
from aliyunsdkcore.client import AcsClient
import json


client = AcsClient('<Your-Access-Key-Id>', '<Your-AccessKeySecret>', '<Region-Id>')
req = DescribeClusterDetailRequest.DescribeClusterDetailRequest()
req.set_ClusterId('<集群ID>')
status, header, res = client.get_response(req)
if status == 200:
    js = json.loads(res)
    print js

对现有集群进行扩容

在集群使用的过程中,由于业务的需要,需要增加或减少(公测期间暂不支持)集群的节点数量,来实现资源利用率的最大化。具体可以参考集群扩容文档

示例代码:

from aliyunsdkcs.request.v20151215 import ScaleClusterRequest
from aliyunsdkcore.client import AcsClient
import json


client = AcsClient('<Your-Access-Key-Id>', '<Your-AccessKeySecret>', '<Region-Id>')
req = ScaleClusterRequest.ScaleClusterRequest()
req.set_ClusterId('<已有集群ID>')
body = '''
{
    "password": "<SSH密码>",
    "instance_type": "ECS实例类型",
    "size": <扩容到的节点数>,
    "data_disk_category": "<磁盘类型>",
    "data_disk_size": <磁盘大小>,
   "ecs_image_id": "<镜像ID,具体参考文档中关于镜像的说明>"
}'''
req.set_content(body)
status, header, res = self.client.get_response(req)

代码说明:

  • 集群更新操作是异步进行的,当参数校验均通过的情况下,服务端会返回status == 202
  • 关于size参数,为要更新到的最终节点数量。例如之前集群有1个节点,此时size的取值范围为[2,10]。目前支持一个集群最多一个节点

获取集群证书内容

经过前面几节的介绍,我们有了很好的集群控制能力。但是我们还缺少一个很重要的工具,用它来打通我们和容器间的通信能力,那就是集群证书。在集群创建成功以后,服务端会自动生成和用户集群相关的证书,以供用来下载来使用。 具体可以参考获取集群证书内容文档

from aliyunsdkcs.request.v20151215 import DescribeClusterCertsRequest
from aliyunsdkcore.client import AcsClient
import json


client = AcsClient('<Your-Access-Key-Id>', '<Your-AccessKeySecret>', '<Region-Id>')
req = DescribeClusterCertsRequest.DescribeClusterCertsRequest()
req.set_ClusterId('<集群ID>')
status, header, res = self.client.get_response(req)
if status == 200:
    js = json.loads(res)
    print js['cert']
    print js['key']
    print js['ca']

代码说明:

  • 当请求返回的status == 200的时候,响应结果里会返回集群证书的内容(json串)
  • 其中的cert是用户公钥证书内容
  • 其中的key是用户私钥证书内容
  • 其中的ca是认证机构证书内容

删除集群

前边介绍了那么多关于集群操作的内容。本节来介绍最后一个关于集群的操作。也是很重要的一个。当集群不在使用的时候,为了避免产生不必要的费用,我们需要及时清理掉不用的集群。具体可以参考删除集群文档

注意:集群的删除是不可逆的,一旦删除所有数据将无法恢复。务必在删除集群前进行数据备份以避免造成不必要的损失。

示例代码:

from aliyunsdkcs.request.v20151215 import DeleteClusterRequest
from aliyunsdkcore.client import AcsClient
import json


client = AcsClient('<Your-Access-Key-Id>', '<Your-AccessKeySecret>', '<Region-Id>')
req = DeleteClusterRequest.DeleteClusterRequest()
req.set_ClusterId('<集群ID>')
status, header, res = self.client.get_response(req)

代码说明:

  • 当status == 202的时候表明集群的删除请求被成功接受,服务端将发起删除操作

总结

通过以上的内容,我们把容器服务的Open API 操作进行了一遍详细的介绍。通过以上的内容,相信大家可以快速的使用容器服务的API进行相应的开发。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
22天前
|
Java 数据处理 调度
Dataphin常见问题之离线管道同步数据datax就报连接超时如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
22天前
|
API 数据库 数据安全/隐私保护
利用Django框架构建高效后端API服务
本文将介绍如何利用Django框架构建高效的后端API服务。通过深入分析Django框架的特性和优势,结合实际案例,探讨了如何利用Django提供的强大功能来构建高性能、可扩展的后端服务。同时,还对Django框架在后端开发中的一些常见问题进行了解决方案的探讨,并提出了一些建设性的建议。
37 3
|
26天前
|
数据采集 JSON API
如何实现高效率超简洁的实时数据采集?——Python实战电商数据采集API接口
你是否曾为获取重要数据而感到困扰?是否因为数据封锁而无法获取所需信息?是否因为数据格式混乱而头疼?现在,所有这些问题都可以迎刃而解。让我为大家介绍一款强大的数据采集API接口。
|
29天前
|
JSON API 数据库
解释如何在 Python 中实现 Web 服务(RESTful API)。
解释如何在 Python 中实现 Web 服务(RESTful API)。
22 0
|
1月前
|
监控 网络协议 API
阿里云BssOpenAPI是一个基于阿里云开放API的服务
【2月更文挑战第24天】阿里云BssOpenAPI是一个基于阿里云开放API的服务
135 6
|
1月前
|
缓存 API 定位技术
使用Python调用百度地图API实现地址查询
使用Python调用百度地图API实现地址查询
87 0
|
13天前
|
前端开发 Java API
构建RESTful API:Java中的RESTful服务开发
【4月更文挑战第3天】本文介绍了在Java环境中构建RESTful API的重要性及方法。遵循REST原则,利用HTTP方法处理资源,实现CRUD操作。在Java中,常用框架如Spring MVC简化了RESTful服务开发,包括定义资源、设计表示层、实现CRUD、考虑安全性、文档和测试。通过Spring MVC示例展示了创建RESTful服务的步骤,强调了其在现代Web服务开发中的关键角色,有助于提升互操作性和用户体验。
构建RESTful API:Java中的RESTful服务开发
|
14天前
|
数据采集 Java API
python并发编程: Python使用线程池在Web服务中实现加速
python并发编程: Python使用线程池在Web服务中实现加速
17 3
python并发编程: Python使用线程池在Web服务中实现加速
|
26天前
|
存储 监控 数据库
Python语言的通用操作系统服务
Python语言的通用操作系统服务
|
28天前
|
XML JSON API
通过Flask框架创建灵活的、可扩展的Web Restful API服务
通过Flask框架创建灵活的、可扩展的Web Restful API服务

相关产品

  • 容器计算服务