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. 以下是自己找了资料,总结并实践的内容.如果有表述和理解错误的地方.恳请指正. ...
随机推荐
- 2.2 spring5源码 -- ioc加载的整体流程
之前我们知道了spring ioc的加载过程, 具体如下图. 下面我们就来对照下图, 看看ioc加载的源代码. 下面在用装修类比, 看看个个组件都是怎么工作的. 接下来是源码分析的整体结构图. 对照上 ...
- Magicodes.IE之导入导出筛选器
总体设计 Magicodes.IE是一个导入导出通用库,支持Dto导入导出以及动态导出,支持Excel.Word.Pdf.Csv和Html.在本篇教程,笔者将讲述如何使用Magicodes.IE的 ...
- 开源 UI 库中,唯一同时实现了大表格虚拟化和树表格的 Table 组件
背景 有这样一个需求,一位 React Suite(以下简称 rsuite)的用户,他需要一个 Table 组件能够像 Jira Portfolio 一样,支持树形数据,同时需要支持大数据渲染. 截止 ...
- 登陆页跳出iframe
1 if(top.location.href != location.href){ 2 top.location.href = location.href; 3 }
- 剑指offer-递归和循环
1. 斐波那契数列 解: 没啥好说的了,直接上高效的滚动迭代解法.矩阵解法和特征根解法这里不讨论了. class Solution: def Fibonacci(self, n): # write c ...
- C++ 中explicit的作用
转载:https://www.cnblogs.com/diligenceday/p/5781408.html C++ 中explicit的作用 explicit作用: 在C++中,explicit ...
- JVM调优常用参数总结
GC通用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间 -XX:+UseTLAB 使用TLAB,默认打开 -XX:+PrintTLAB 打印TLAB的使用情况 -XX:T ...
- 利用 JS 脚本实现网页全自动秒杀抢购
利用 JS 脚本实现网页全自动秒杀抢购 倒计时页面: 倒计时未结束时,购买按钮还不能点击. 结束时,可以点击购买,点击后出现提示"付款成功" 展示效果 1.制作测试网页 首先我们来 ...
- 在SpringBoot项目中怎样引入.yml文件中的设置
SpringBoot中获取application.yml文件内容 原始方式pro.load()与 pro.getProperty()配合的方式 @Value注解方式 @ConfigurationPro ...
- pytest文档59-运行未提交git的用例(pytest-picked)
前言 我们每天写完自动化用例后都会提交到 git 仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交 git 仓库的用例. pytest-picked 插件可 ...