此文仅供了解kubernates的开发人员写api接口时参考。java
1、前言api
java访问kubernates API的方式有不少,用java语言开发的有两种,一个是基于Jersey的,一个是基于Fabric8。由于Kubernates API Server就是RESRFul Web Service,而Jersey是一个方便简化开发RESRFul Web Service的框架因此采用jersey会比较省力,但仍是须要开发者本身作不少工做。Fabric8中的kubernates-client-1.3.83.jar,kubernates-model-1.0.12.jar等工具包包对kubernates api作了很好的封装,访问代码比较简单。框架
2、使用说明工具
准备好相关的jar包ui
建立访问API Server的客户端spa
代码参见三server
操做kubernates的各项资源接口
经常使用的资源(资源解释后续会加上):资源
Nodes开发
Namespaces
Services
Replicationcontrollers
Pods
Events
Resourcequotas
能够经过api对以上资源作增删改查各类操做。
3、具体代码实现
1.建立访问k8s API server的客户端代码示例
Config config = new ConfigBuilder().withMasterUrl("http://10.45.32.153:8080/").build();
KubernetesClient client = new DefaultKubernetesClient(config);
// http://10.45.32.153:8080/ 是API Server的地址
2.查询k8s资源的代码示例(每种资源的查询方式大同小异)
几乎全部的资源均可以查,如今咱们以查询namesapce为例进行讲解。
A 查询全部的namespace列表
List<Namespace> nameSpaceList =client.namespaces().list().getItems();
B 根据条件查询namespace
Namespace space = client.namespaces().withName(tenant.getAccount()).get();
能够根据不少种条件进行过滤
3.建立资源示例代码(这是最核心的部分,每种资源的建立方式不一样)
A建立租户
Namespace ns = new NamespaceBuilder().withNewMetadata()
.withName(tenant.getAccount()).endMetadata().build();
// 属性设置
ObjectMeta metadata = new ObjectMeta();
Map<String,String> labels = new HashMap<String, String>();
labels.put("label1", tenant.getAccount());
metadata.setLabels(labels);
metadata.setNamespace(tenant.getAccount());
metadata.setName(tenant.getAccount());
ns.setMetadata(metadata);
// 执行建立操做
client.namespaces().create(ns);
B建立结果
注释:该代码没有给namespace设置quotas
4.修改租户配额示例代码
5.删除租户示例代码
client.namespaces().withName(tenant.getAccount()).delete();
后续会对namespace,service,rc,pod等的增删改查代码作出详细的描述,敬请关注!!!