本文来自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工程师和社区用户的使用经验看,主要有以下几点:

  1. 扩展Rancher API非常复杂,只有深入阅读Rancher代码或者接受了一定培训的开发人员才能做到。

  2. Kubernetes API在不断演变,Rancher API去兼容多个版本的Kubernetes API变得越来越困难。

  3. 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的更多相关文章

  1. 【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单

    一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两 ...

  2. 转:[你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单

    本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单  async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...

  3. [你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单

    本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单  async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...

  4. 四、C# 5.0 新特性——Async和Await使异步编程更简单

    一.引言 .NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作,下面就 ...

  5. Java 13 特性解读

    Java 13 特性解读    转 https://blog.csdn.net/bjweimengshu/article/details/100978383   2017年8月,JCP执行委员会提出将 ...

  6. spring 第一篇(1-1):让java开发变得更简单(下)

    切面(aspects)应用 DI能够让你的软件组件间保持松耦合,而面向切面编程(AOP)能够让你捕获到在整个应用中可重用的组件功能.在软件系统中,AOP通常被定义为提升关注点分离的一个技术.系统由很多 ...

  7. [翻译]Kafka Streams简介: 让流处理变得更简单

    Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...

  8. mysql 利用触发器(Trigger)让代码更简单

    一,什么触发器 1,个人理解 触发器,从字面来理解,一触即发的一个器,简称触发器(哈哈,个人理解),举个例子吧,好比天黑了,你开灯了,你看到东西了.你放炮仗,点燃了,一会就炸了. 2,官方定义 触发器 ...

  9. Moq让单元测试变得更简单

    [ASP.Net MVC3 ]使用Moq让单元测试变得更简单 前几天调查完了unity.现在给我的任务是让我调查Moq. 以下是自己找了资料,总结并实践的内容.如果有表述和理解错误的地方.恳请指正. ...

随机推荐

  1. 【云原生下离在线混部实践系列】深入浅出 Google Borg

    Google Borg 是资源调度管理和离在线混部领域的鼻祖,同时也是 Kubernetes 的起源与参照,已成为从业人员首要学习的典范.本文尝试管中窥豹,简单从<Large-scale clu ...

  2. django rest_framework serializer的ManyRelatedField 和 SlugRelatedField使用

    class BlogListSerializer(serializers.Serializer): id = serializers.IntegerField() user = BlogUserInf ...

  3. 一种基于均值不等式的Listwise损失函数

    一种基于均值不等式的Listwise损失函数 1 前言 1.1 Learning to Rank 简介 Learning to Rank (LTR) , 也被叫做排序学习, 是搜索中的重要技术, 其目 ...

  4. notepad快捷使用

    1.快捷键 参考:https://www.php.cn/tool/notepad/428638.html notepad++是经常使用的一款编辑器软件,在编辑特殊文本的时候(html,java...) ...

  5. JDBC Java 程序从 MySQL 数据库中读取数据,并封装到 Javabean 对象中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 连接 MySQL 数据库 用于测试的 M ...

  6. 最新vue项目添加水印

    在utils文件夹中创建 wartermark.ts 文件(位置看自己的组件放那,这都行),内容如下: 1 "use strict"; 2 3 const setWatermark ...

  7. Linux系统如何在离线环境或内网环境安装部署Docker服务和其他服务

    如何在离线环境或纯内网环境的Linux机器上安装部署Docker服务或其他服务.本次我们以Docker服务和Ansible服务为例. 获取指定服务的所有rpm包 保证要获取rpm包的机器能够上网. 本 ...

  8. JavaCV FFmpeg H264编码

    上次成功通过FFmpeg采集摄像头的YUV数据,这次针对上一次的程序进行了改造,使用H264编码采集后的数据. (传送门) JavaCV FFmpeg采集摄像头YUV数据 采集摄像头数据是一个解码过程 ...

  9. 线上服务的FGC问题排查

    转载:https://blog.csdn.net/g6U8W7p06dCO99fQ3/article/details/106088467 线上服务的GC问题,是Java程序非常典型的一类问题,非常考验 ...

  10. docker 升级后或者重装后,启动容器提示:Error response from daemon: Unknown runtime specified docker-runc

    之前安装的版本是docker 1.3,并运行了容器jenkins 现在把docker升级版本为docker-ce 19.03 再使用docker ps发现之前的jenkins容器已经退出了 启动容器: ...