此文仅供了解kubernates的开发人员写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做了很好的封装,访问代码比较简单。
二、使用说明
-
准备好相关的jar包
-
创建访问API Server的客户端
代码参见三
-
操作kubernates的各项资源
常用的资源(资源解释后续会加上):
Nodes
Namespaces
Services
Replicationcontrollers
Pods
Events
Resourcequotas
可以通过api对以上资源做增删改查各种操作。
三、具体代码实现
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 = https://my.oschina.net/u/3233222/blog/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等的增删改查代码做出详细的描述,敬请关注!!!
http://www.07net01.com/2017/01/1789937.html
http://hao.jobbole.com/fabric8/
相关推荐
基于fabric8io的kubernetes Java 依赖包,jar包列表: fabric-utils-2.0.47.jar httpclient-4.5.3.jar kubernetes-client-3.0.3.jar kubernetes-model-2.0.8.jar log4j-1.2.15.jar log4j-over-slf4j-1.7.25.jar slf4...
在这个特定的案例中,"linux-基于Fabric8模拟Kubernetes的Deployment实现一个CRD"意味着我们要使用Fabric8来模仿Kubernetes的Deployment行为,并创建一个自定义资源类型。 CRD是Kubernetes的一个强大特性,它允许...
kubernetes-client/java和fabric8io/kubernetes-client对比 kubernetes-client/java的使用 REST API kubectl api-versions REST API 实例: API Object 整体划分图 (红星符号代表常用资源) kubernetes-client/java...
Kubernetes-client-java Java 客户端。灵活性。它可以支持所有基于 Kubernetes 的系统,并最大限度地减少额外的开发,例如 Openshift、istio 等。可用性。开发人员只需要学习从 Kubernetes 文档中编写 json/yaml...
istio-java-api 一个为... 您还可以查看项目,该项目演示了使用Fabric8 OpenShift适配器和此API将Istio工件发送到正在运行的OpenShift集群的端到端方案配置在哪个Istio上进行设置。 从此API的1.7.7开始,Fabric8 Kubern
- **Fabric8库**:一个强大的Java客户端库,用于与Kubernetes和OpenShift集群交互。它提供了丰富的API,简化了资源操作,如创建、更新、删除和查询。 - **OpenShift集成**:除了Kubernetes API,Fabric8还支持...
就是说,fabric8的实现是实现棘手的IO时我的主要参考。 模组 该模块捆绑了所有模块(如下所述),以易于使用。 这实现了基本的REST和websocket客户端代码以与Kubernetes API进行通信。 它使用远程K
Fabric8是一款基于Kubernetes的开源平台,它提供了一套完整的工具集,用于简化和加速Java和Kubernetes的应用开发。通过提供服务发现、配置管理、监控和日志等能力,Fabric8使开发者能够轻松地构建、部署和管理微服务...
infinispan-cloud使用KUBE_PING来查询Kube API中需要添加权限的节点,吊舱和标签,因此与部署相关联的服务帐户需要添加所需角色,以允许infinispan查询kubernetes API。 此应用程序使用一个名为Popular-Movie-store...
Jenkins插件通常由Java编写,但Python的jenkins库提供了与Jenkins API交互的能力,方便自定义构建步骤。GitLab CI/CD也可通过Python脚本实现自动化流程。 7. **Python与监控和日志** 使用Python可以创建自定义...
- **Azure Kubernetes Service (AKS)**:托管的Kubernetes服务,简化了Docker容器的部署和管理。 - **Azure Container Instances (ACI)**:快速启动独立的容器实例。 9. **大数据与分析:** - **Azure Data Lake...
这可能通过集成像Crashlytics或Fabric等服务实现。 总结来说,"palo.bar:我的鸡尾酒笔记!"这款应用的开发涵盖了前端与后端技术、数据库管理、移动平台开发、用户体验设计、测试、部署等多个IT领域,每个环节都需要...
7. **容器化**:Python应用可以轻松地被Docker打包,部署在Kubernetes或Docker Swarm等容器编排系统上,实现灵活的扩展和部署。 8. **日志和监控**:Python可以整合如Loguru、Sentry等工具进行日志记录和错误跟踪,...
8. **SignalR**:实现实时双向通信,如聊天应用或实时更新的数据展示。 9. **Self-hosting**:通过编程方式启动和管理服务器,例如ASP.NET Core的`UseUrls`方法。 10. **IIS Express**:轻量级版本的IIS,用于开发...
8. **Azure Kubernetes Service (AKS)**: 管理的Kubernetes服务,简化了容器编排,支持Docker和Kubernetes应用。 9. **Azure SQL Database**: 在云中的托管关系数据库服务,兼容SQL Server。 10. **Cosmos DB**: ...
它支持多种编程语言(如 .NET、Java、Python 和 Node.js),并自动处理缩放、高可用性和安全更新。 六、Azure Service Fabric Service Fabric 是一个分布式系统平台,用于构建可伸缩、可靠且易于管理的服务。它...
- **azure** 和 **AzureJava**:利用Azure的Java SDK或API与Elasticsearch交互,实现自动化管理和运维。 总之,Elasticsearch在Azure的部署涉及多个层面,包括选择适当的部署模型、优化性能、监控运行状况以及遵循...