现状

dhorse 1.4.0版本之前,一直使用k8s官方提供的sdk与k8s集群交互,官方sdk的Maven坐标如下:

<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>18.0.0</version>
</dependency>

但是自从1.4.0版本以后,dhorse开始支持fabric8的sdk,fabric8的sdk的Maven坐标如下:

<dependency>
<groupId>io.fabric8</groupId>
<artifactId>kubernetes-client</artifactId>
<version>6.9.0</version>
</dependency>

那么,为什么要替换为fabric8的sdk与k8s交互呢?

k8s官方与fabric8的对比

1.社区方面

两者的关注度上,都差不多,没有太大差别;

但是,fabric8的sdk提供的文档和示例更加完善,而k8s官方提供的示例较少;

2.功能方面

fabric8不仅支持k8s,同时也支持OpenShift,而官方sdk支持k8s;

3.包大小

k8s官方sdk依赖的sdk过大,有30M左右,而fabric8只有不到10M;

使用官方的sdk也会导致dhorse的安装包过大。

4.API使用方面

举个例子,以查询k8s集群的命名空间列表为例,说明代码如下。

官方:

ApiClient apiClient = this.apiClient(clusterPO.getClusterUrl(), clusterPO.getAuthToken());
CoreV1Api coreApi = new CoreV1Api(apiClient);
List<ClusterNamespace> namespaces = new ArrayList<>();
String labelSelector = null;
if(pageParam != null && !StringUtils.isBlank(pageParam.getNamespaceName())) {
labelSelector = "kubernetes.io/metadata.name=" + pageParam.getNamespaceName();
}
try {
V1NamespaceList namespaceList = coreApi.listNamespace(null, null, null, null,
labelSelector, null, null, null, null, null);
} catch (ApiException e) {
String message = e.getResponseBody() == null ? e.getMessage() : e.getResponseBody();
LogUtils.throwException(logger, message, MessageCodeEnum.CLUSTER_NAMESPACE_FAILURE);
}

fabric8:

try(KubernetesClient client = client(clusterPO.getClusterUrl(), clusterPO.getAuthToken())){
ListOptions o = new ListOptions();
if(pageParam != null && !StringUtils.isBlank(pageParam.getNamespaceName())) {
o.setLabelSelector("kubernetes.io/metadata.name=" + pageParam.getNamespaceName());
}
namespaceList = client.namespaces().list(o);
}

可以看出,官方提供的API接口不够简洁,而且抛出了不必要的异常。

结论

综上,dhorse后续版本会默认选择fabric8的sdk与k8s器群交互,并计划在v1.6的版本里下掉k8s官方的sdk。

DHorse改用fabric8的SDK与k8s集群交互的更多相关文章

  1. kubernetes生态--交付prometheus监控及grafana炫酷dashboard到k8s集群

    由于docker容器的特殊性,传统的zabbix无法对k8s集群内的docker状态进行监控,所以需要使用prometheus来进行监控: 什么是Prometheus? Prometheus是由Sou ...

  2. Centos下部署最后一版支持Docker的k8s集群

    部署版本 首先要确定部署的版本 查询Kubernetes对Docker支持的情况 kubernetes/dependencies.yaml at master · kubernetes/kuberne ...

  3. China Azure中部署Kubernetes(K8S)集群

    目前China Azure还不支持容器服务(ACS),使用名称"az acs create --orchestrator-type Kubernetes -g zymtest -n kube ...

  4. k8s集群Canal的网络控制 原

    1 简介 直接上干货 public class DispatcherServlet extends HttpServlet { private Properties contextConfigProp ...

  5. kubernetes系列03—kubeadm安装部署K8S集群

    本文收录在容器技术学习系列文章总目录 1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm ...

  6. k8s重要概念及部署k8s集群(一)--技术流ken

    重要概念 1. cluster cluster是 计算.存储和网络资源的集合,k8s利用这些资源运行各种基于容器的应用. 2.master master是cluster的大脑,他的主要职责是调度,即决 ...

  7. K8S集群 NOT READY的解决办法 1.13 错误信息:cni config uninitialized

    今天给同事 一个k8s 集群 出现not ready了 花了 40min 才搞定 这里记录一下 避免下载 再遇到了 不清楚. 错误现象:untime network not ready: Networ ...

  8. Kubeadm安装的K8S集群1年证书过期问题的解决思路

    这个问题,很多使用使用kubeadm的用户都会遇到. 网上也有类似的帖子,从源代码编译这种思路, 在生产环境,有些不现实. 还是使用kubeadm的命令操作,比较自然一点. 当然,自行生成一套证书,也 ...

  9. 自建k8s集群日志采集到阿里云日志服务

    自建k8s集群 的master 节点安装 logtail 采集工具 wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.c ...

  10. k8s学习笔记之二:使用kubeadm安装k8s集群

    一.集群环境信息及安装前准备 部署前操作(集群内所有主机): .关闭防火墙,关闭selinux(生产环境按需关闭或打开) .同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器 .关闭swap ...

随机推荐

  1. 【小小Demo】微信公众号如何接入微信机器人

    微信对话开放平台文档 官方文档 平台简介 微信对话开放平台开放了微信在对话领域积累多年的的智能对话技术,开发者及非开发者可简单.快速地搭建智能对话机器人(智能客服), 并接入公众号.小程序等,为业务赋 ...

  2. 【转载】Linux虚拟化KVM-Qemu分析(七)之timer虚拟化

    原文信息 作者:LoyenWang 出处:https://www.cnblogs.com/LoyenWang/ 公众号:LoyenWang 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作者 ...

  3. Android进阶-NDK技术

    一.介绍 1.什么是ndk技术? 在学习ndk技术前,我们需要先了解一下JNI(Java Native Interface)技术,JNI技术是一种实现Java代码和C/C++代码之间交互的技术,它提供 ...

  4. EasyExcel · 写excel

    原文地址 通用数据生成 后面不会重复写 private List<DemoData> data() { List<DemoData> list = ListUtils.newA ...

  5. Django基本数据库操作

    Django基本数据库操作 @ 目录 Django基本数据库操作 ‍内容一:基本数据库配置 ‍内容二:ORM基本操作 ‍内容一:基本数据库配置 Django是一个流行的Python Web框架,它可以 ...

  6. 使用调试工具调试博图TCP连接所遇到的问题

    PLC端使用的指令 PLC为服务器端,电脑为客户端,以上为服务器与客户端的配置参数 启动连接后连接成功,PLC的IP地址也可以ping通 ------------------------------- ...

  7. 如何在Avalonia11中设置自定义字体

    如何在Avalonia11中设置自定义字体 由于avalonia默认的中文字体显示的效果不太理想,我们需要下载一些自定义的字体,来优化UI的显示效果.avalonia的官方文档地址. 对我在项目中运用 ...

  8. 关于zbar

    python3不支持zbar,可以使用pyzbar python2支持zbar

  9. 使用 python 快速搭建http服务

    python -m SimpleHTTPServer 8888 使用上面的命令可以把当前目录发布到8888端口. 直接浏览器访问 但是这条命令是当前运行的,不是后台运行的,也就是说如果Ctrl + C ...

  10. 你们眼睛干涩,胀痛吗?C# WPF 久坐提醒桌面小程序

    目录 说明 设置提醒时间,及休息时间 久坐提醒倒计时 休息提醒倒计时 休息到计时 代码说明 主窗体设置 工作到计时 休息倒计时 源码 久坐提醒桌面小程序: 干这行职业病比较多,之前用爱丽(即:玻璃酸钠 ...