Rancher 2.5特性解读丨更简单友好的API和Dashboard
本文来自Rancher Labs
关注我们,看K8S干货教程
作者简介
张智博,Rancher中国研发与产品总监。7年云计算领域经验,一直活跃在研发一线,经历了OpenStack到Kubernetes的技术变革,无论底层操作系统Linux,还是虚拟化KVM或是Docker容器技术都有丰富的研发和实践经验。
自Rancher 2.0系列版本问世,以其简单务实的UI风格和成熟稳健的后端架构赢得了市场的普遍青睐。Kubernetes本身架构和功能逐渐稳定,同时拥有丰富经验的Kubernetes技术人员也在不断增加,根据市场出现的这些新变化,我们近期发布的Rancher 2.5对此做出了诸多改变。本文将从API和Dashboard两个角度来探讨Rancher 2.5的变化。
Kubernetes Native API
Rancher 2.5之前的版本中,我们对原生的Kubernetes API做了一些封装,以便适应我们的UI展示需求。这些封装的好处就是,我们可以定义适用自身的数据结构,并且提供了一套可以单独交互的API-UI,用户可以使用它来模拟调用API。通常在Rancher UI的很多入口中,点击“View API”或者在浏览器中访问“https:///v3”即可查看访问。这些API本身基于Kubernetes CRD实现,封装后形成了Rancher风格API。至于如何定义Rancher风格API,可以访问此链接查看:
https://github.com/rancher/api-spec
当然,这种做法的劣势显而易见,从Rancher工程师和社区用户的使用经验看,主要有以下几点:
扩展Rancher API非常复杂,只有深入阅读Rancher代码或者接受了一定培训的开发人员才能做到。
Kubernetes API在不断演变,Rancher API去兼容多个版本的Kubernetes API变得越来越困难。
Rancher API屏蔽了一些高级API参数,对于一些高级用户,这非常不友好。
对于这些问题,我们在Rancher 2.4已经开始尝试做一些改变,细心的小伙伴可能发现了Rancher 2.4的新型Dashboard,它背后使用的就是新风格的Rancher API。这套API的实现依靠一个相对独立的组件steve,为了解决之前的API问题,steve做了以下改善工作:
完全沿用Rancher的API-UI模式,不破坏用户的使用习惯。
兼容Kubernetes Native API,包括原生对象和CRD,最大程度保留其数据字段。
扩展API非常简单,只要向Kubernetes注册了CRD,steve通过内置controller来watch CRD资源变化,将其热装载加入steve API中。
Steve是一个较为独立的组件,即使离开Rancher也依然能够独立运行。如果想要在二次开发Kubernetes,但是觉得原生API不友善,完全可以在上面启用Steve风格的API。笔者做了一个小实验,部署k3s并独立安装steve,可以非常方便得到一个友好的API。
k3s安装过程较为简单直接略过,steve的编译直接参考Makefile/Dockerfile即可。成功编译后,会在本地生成一个steve:latest的镜像,然后使用docker run -itd --net=host -v ${HOME}/.kube:/root/.kube steve:latest启动steve,我们就能够获得一个Kubernetes Native的Rancher API。访问“https://:9443/v1”可以查看效果:

Kubernetes Native Dashboard
如今Kubernetes生态中,可接入的扩展组件越来越多,往往我们会在Kubernetes中安装Prometheus、Istio、ArgoCD等各种程序,这些程序基本都会通过CRD来增强自己的服务能力。这就导致了集群中存在大量的CRD,并且越来越难以管理,于是很多经验丰富的高级技术人员开始期望CRD的可视化管理,以避免Kubectl CLI操作的繁琐。从这个需求出发,Rancher 2.5中集成的新Dashboard也更加Kubernetes Native化。
这一切都源于Steve API的能力,可以让我们非常方便地间接使用Kubernetes API。在Rancher 2.4中,我们已经提供了这个功能的实验版,相信很多用户都已经试用。在Rancher 2.5中,这部分功能将会正式提供,这对于管理单个Kubernetes集群的高级技术人员将会非常友好。
新的Dashboard可以对Kubernetes原生资源和CRD扩展资源都进行可视化管理,在诸如Kubernetes原生资源的创建等表单上也会提供全面的参数设置,比Rancher 2.4时代的实验性Dashboard更加成熟。整体的页面风格也更加倾向简洁,对于熟练使用Kubernetes的开发的人员会非常方便,同时也采用了Vue框架编写,这对于国内用户做二次开发也是一个大利好。

上手体验Rancher 2.5
在Rancher 2.5中可以继续使用docker run方式试用体验,与先前不同的是需要增加privileged参数:
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher:v2.5.1
启动完成后,首次进入登录页,除了配置初始化密码外,还要设置默认视图。两个视图分别是:多集群管理和单集群管理,前者沿用Rancher2.4 UI并做增强,后者就是前文介绍的Kubernetes Native Dashboard。对于Native Dashboard,由于启动时增加了privileged提权参数,所以可以在容器中启动一个完整的local集群,原先docker run方式只能启动的是kube-api,并非一个完整集群,现在通过新的Dashboard则可以完整管理它,在local集群上新建workload,当然我们相信你只会在开发测试时如此使用。

总的来说,期望单一集群管理的用户,相比之前会节省很多部署资源。而期望使用多集群管理的用户,Rancher 2.5依然会保留访问入口,同时多集群管理的核心功能也将会有重大的提升,Rancher 2.5整体架构也更加灵活,将会非常方便用户进行模块化的扩展,这些内容我们在后续的文章中逐步交流。
Rancher 2.5特性解读丨更简单友好的API和Dashboard的更多相关文章
- 【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单
一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两 ...
- 转:[你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单
本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单 async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...
- [你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单
本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单 async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...
- 四、C# 5.0 新特性——Async和Await使异步编程更简单
一.引言 .NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作,下面就 ...
- Java 13 特性解读
Java 13 特性解读 转 https://blog.csdn.net/bjweimengshu/article/details/100978383 2017年8月,JCP执行委员会提出将 ...
- spring 第一篇(1-1):让java开发变得更简单(下)
切面(aspects)应用 DI能够让你的软件组件间保持松耦合,而面向切面编程(AOP)能够让你捕获到在整个应用中可重用的组件功能.在软件系统中,AOP通常被定义为提升关注点分离的一个技术.系统由很多 ...
- [翻译]Kafka Streams简介: 让流处理变得更简单
Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...
- mysql 利用触发器(Trigger)让代码更简单
一,什么触发器 1,个人理解 触发器,从字面来理解,一触即发的一个器,简称触发器(哈哈,个人理解),举个例子吧,好比天黑了,你开灯了,你看到东西了.你放炮仗,点燃了,一会就炸了. 2,官方定义 触发器 ...
- Moq让单元测试变得更简单
[ASP.Net MVC3 ]使用Moq让单元测试变得更简单 前几天调查完了unity.现在给我的任务是让我调查Moq. 以下是自己找了资料,总结并实践的内容.如果有表述和理解错误的地方.恳请指正. ...
随机推荐
- PyCharm2018.3.5下载和安装及永久破解详解(成功案例)
靓仔靓女,你是否在网上找了很多的方法都破解不了PyCharm,是有原因的!无论什么编程工具都不要下载近一到/两年内的版本,人家即把网上的一些破解方法修复了,而且还在测试阶段,不稳定就完事了我装的是20 ...
- linux循环定时任务
crond定时任务 centos # 重启服务 service crond restart ----------------------------------------- chkconfig cr ...
- django rest_framework serializer的ManyRelatedField 和 SlugRelatedField使用
class BlogListSerializer(serializers.Serializer): id = serializers.IntegerField() user = BlogUserInf ...
- Solon详解(十)- 怎么用 Solon 开发基于 undertow jsp tld 的项目?
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...
- [POI2009]ARC-Architects
[POI2009]ARC-Architects 题意: 给定一个序列,从中挑选k个数,满足下标单调递增,并且字典序最小: 思路: 由于字典序最小,所以考虑贪心,即前面的数尽可能大,所以用单调队列维护最 ...
- Visual C# 制作DLL文件
一.制作.dll1.首先创建一个新类库工程文件 文件->新建->项目->Visual C#->类库.填入工程文件名称,并且选择文件要存放的目录. 2.工程文件 将Class1 ...
- Java基础系列-SPI你认识吗
原创文章,转载请标注出处:https://www.cnblogs.com/V1haoge/p/10755313.html 一.SPI是什么 SPI是相对API而言的. API指的是应用对服务调用方提供 ...
- 制作iconfont放到自己的公共组件库
我们公司的icon是UI提供svg,我们转成iconfont. 这里就不详细说明怎么制作svg,可以上网搜一下,https://www.iconfont.cn/help/detail?spm=a313 ...
- IDEA 简拼输入
1. sout = System.out.println(); 2. soutp = System.out.println(""); 3. soutv = System.out.p ...
- day52 Pyhton 前端03
内容回顾 块级标签: div p h 列表:ol;ul;dl 表格:table 行内标签: span a i/em b/strong u/del 行内块: input textarea img 其他: ...