1、简介:

istio 是 service mesh 界的明星项目,今天要试玩的是它的低配版Rio。
Rio 是Rancher新出的一款轻量级service mesh产品,基于linkerd2,相当轻。但麻雀虽小,五脏俱全,基本上istio有的功能,它都有。
github:https://github.com/rancher/rio

由于是低配版,本文集群也选择k8s的低配版k3s
整个环境运行起来只需要2G内存,相比istio要轻量很多,一台2C4G的主机,即可流畅体验service mesh的魅力。

本文主要介绍一下安装过程,然后运行一个bookinfo示例,实现金丝雀发布。

2、应用版本:

  • k3s:1.0.0
  • Rio:0.6.0
  • Rancher:2.3.3

开始之前我们需准备最低配置2C4G主机一台,安装好docker

3、安装k3s:(如果你已有k8s环境,可以跳过此步骤,直接在k8s上体验Rio)

官方介绍的安装方式相当简单,执行如下命令即可

curl -sfL https://get.k3s.io | sh -

(国内网络用这条命令会安装不成功,github上的release包下载不下来)
Rancher的产品易用性做的还是相当不错的,只是这对国内网络的用户不太友好(* ̄︶ ̄)

下载k3s安装包

我们需要先fan qiang把k3s的安装包下载下来,然后再安装
根据服务器的架构类型选择相应的release包下载: https://github.com/rancher/k3s/releases
一般服务器都是x86,选择amd64的即可,arm64是低功耗设备的架构,比如手机

下载工具推荐:
代理: https://github.com/killgcd/chromego
嫌代理麻烦也可以用这个下载工具:Free Download Manager

安装

把下载的release包上传到服务器的/usr/local/bin/目录下,命名为k3s
然后执行如下命令

chmod +x /usr/local/bin/k3s
export INSTALL_K3S_SKIP_DOWNLOAD=true
export INSTALL_K3S_EXEC="server --docker --no-deploy=traefik"
curl -sfL https://get.k3s.io | sh -

配置kubectl

k3s安装好之后,集群配置文件在/etc/rancher/k3s/k3s.yaml ,把它放到.kube下即可通过kubectl访问集群

cp /etc/rancher/k3s/k3s.yaml   ~/.kube/configsudo kubectl get nodes #查看安装主机节点,需要安装kubectl

kubectl下载地址:https://docs.rancher.cn/rancher2x/install-prepare/download/kubernetes.html
下载后放到/usr/local/bin目录下,增加执行权限即可

以上k3s单节点即安装完毕

4、Rancher2安装

(此步骤不是必须,但由于安装Rio时很多镜像是在gcr.io下的,国内无法访问,所以需要安装Rancher后,才能直观的知道哪些镜像需要自己手动去下载)

1.Rancher单节点安装(两种方式都可以)

1、官方文档上的方式安装
2、docker-compose方式安装(需要安装docker-compose,不会安装的自行百度搜索)

version: "2.4"
services:rancher:image: rancher/rancher:latestrestart: alwayscontainer_name: rancher2volumes:- /root/deploy/rancher/rancher2:/var/lib/rancher- /root/deploy/rancher/log/auditlog:/var/log/auditlog \ports:- 8443:443- 8000:80

将以上内容保存为/root/deploy/rancher/docker-compose.yaml
然后执行如下命令即可

cd /root/deploy/rancher/
docker-compose build
docker-compose up -d
2.访问Rancher

浏览器打开:https://你的服务器ip:8443/

5、Rancher2导入k3s集群

1.创建集群

点击添加集群,选择导入,然后输入集群名称,点击创建

2.导入k3s集群


复制图示的最后一条命令,去服务器上执行,然后等待导入完成。

以上为rancher导入k3s集群步骤

6、Rio安装

经过前面这么长的准备,终于来到今天的主角Rio的安装了。
官方介绍Rio的安装也相当简单

$ curl -sfL https://get.rio.io | sh -
$ rio install
1.同样是国内网络问题,rio的安装包需要手动下载

先下载Rio安装包:https://github.com/rancher/rio/releases
选择amd64下载

将下载下来的rio安装包复制到/usr/local/bin/目录下,重命名为rio

chmod +x /usr/local/bin/rio #给rio添加执行权限
2.将rio安装到k3s集群上
rio install --ip-address 192.168.3.xx --disable-features build
#--ip-address 为你服务器节点局域网ip,如果有外网ip请使用外网ip,多个可以逗号分隔。
#--disable-features build 当前rio版本国内安装建议禁用build功能,build功能安装时拉取的镜像是通过签名获取的而不是通过tag,所以下载有点问题,即便是通过修改该下载后的镜像的tag,使得安装成功,运行build功能的时候请求github也有tls的问题,各位有兴趣可以去尝试。
rio -n rio-system pods #查看部署情况
$ rio -a ps # 查看进程
$ rio info #查看rio详情

不过同样还是国内网络问题,gcr.io的镜像包下载不来,部署进度会卡住

3.查看哪些gcr.io镜像拉不下来

命令行下无法直观看出我们哪些镜像下载不下的,所以需要借助Rancher2
先进入Rancher控制台,进入k3s集群,点击命名空间管理,将linkerd和rio-system两个命名空间移动到default下

然后进入default

点击红色安装有问题的负载,进入pod,点击事件,找到image “gcr.io/linkerd-id/xxxxx” pull失败之类的错误,

4.手动下载gcr.io镜像

说到这gcr.io镜像的下载,就不得不推荐一下这个项目:https://github.com/zhangguanzhang/gcr.io
一个命令即可将 查找镜像,pull镜像,重命名tag一次性搞定
比如要拉取gcr.io/google_containers/pause:3.1这镜像,则执行如下命令即可

curl -s https://zhangguanzhang.github.io/bash/pull.sh | bash -s -- gcr.io/google_containers/pause:3.1

有了这个神器,则只需要将rancher上飘红的所有拉取失败镜像,自己手动拉取一遍即可
直到全部变绿,就没啥问题了。
执行命令查看安装情况

rio -n rio-system pods #查看部署情况


如果发现不是succeeded状态,就需要重新安装,由于之前已经下载好了镜像,重新安装就很顺畅了

rio uninstall # 先卸载
rio install --ip-address 192.168.3.xx --disable-features build  #再重新安装

基本上看到succeeded即表示rio成功安装,接下来就可以部署应用进行体验了

6、部署一个nginx试试

通过rio run 命令即可部署一个nginx服务。

#rio run -p 80:8080 https://github.com/rancher/rio-demo #由于禁用build功能,无法通过源码打包镜像方式部署
rio run -p 80:80 nginx #只能通过镜像库下载镜像部署
rio ps #查看部署情况


将图示中的网址复制到浏览器上即可访问服务
rio会自动将*.xxxx.on-rio.io域名解析到安装时配置的ip-address下,所以该域名指向的就是你集群节点的服务器。
如果安装时没有配置ip-address,你也可以将该域名在hosts上配置解析到你的服务器节点ip上,即可访问到。

7、rio dashboard

rio还提供了一个管理控制台

rio dashboard

不用管报出来的错(那是无法打开服务器上的浏览器报的错),直接复制打印出来的浏览器地址去访问即可。第一次访问需要设置管理员账号密码。

8、linkerd-web

rio内部集成了linkerd2作为微服务治理框架,所以也提供了linkerd-web的管理后台

# rio linkerd # 官方介绍的访问命令是这个,不过对这个命令连文档都没有,应该还不太完善
Forwarding from 127.0.0.1:9999 -> 8084
Forwarding from [::1]:9999 -> 8084

执行这个命令后,会阻塞,然后打开9999端口,可以通过9999端口在去访问linkerd-web
不过它forwarding出来的却不支持外网或局域网访问,只支持ipv4/ipv6的本机访问,服务器上又没有装浏览器,访问个鸟o(╥﹏╥)o
因为linkerd-web目前没有认证鉴权功能,暴露出来不太安全,所以仅本机访问也说的过去。
那就只能另寻办法了,我们通过nginx代理将linkerd-web暴露出来

nginx配置镜像: https://github.com/greper/rio-first/
此代码已经打包成镜像上传到dockerhub上
镜像名称为: xiao5233/linkerd-web-nginx:1.1

在linkerd命名空间部署该镜像,随便暴露一个端口,如下图创建服务即可将linkerd-web代理暴露出来

浏览器访问 http://服务器ip:87/ 即可打开linkerd-web
有简单的服务流向图,不过比kiali还是差点儿(目前这个版本rio还没有集成kiali,不过看issue好像快要支持了)

浏览器访问 http://服务器ip:87/grafana 即可打开grafana

9、实战,部署一套bookinfo玩玩

打开dashboard,点击services,然后点击create

如下图所示,创建productpage服务

服务名称 镜像 端口
productpage docker.io/istio/examples-bookinfo-productpage-v1:1.15.0 9080

然后创建其他服务,端口都是9080,可以不勾选Exposed,这些都是内部服务,无需暴露访问地址

服务名称 镜像 端口
details docker.io/istio/examples-bookinfo-details-v1:1.15.0 9080
ratings docker.io/istio/examples-bookinfo-ratings-v1:1.15.0 9080
reviews docker.io/istio/examples-bookinfo-reviews-v1:1.15.0 9080


访问productpage试试

rio ps #找到productpage的访问地址,复制到浏览器访问

也可以在dashboard点击服务,找到endpoints 中点击链接访问

10、金丝雀发布

接下来给reviews进行v2 v3版本的金丝雀发布



现在访问productpage,评论区会轮流出现不同颜色的星星和v1版本的没有星星


当v2 v3版本测试没有问题之后,即可逐步将v1版本的weight设置为0,最后下线v1版本,一次新版本发布就完成了

11、总结

本文介绍了k3s、rancher、rio的安装(其中rio禁掉了build功能)
然后部署了一套istio的示例应用bookinfo
然后体验了一下使用rio进行金丝雀发布应用版本

总体来说,除了安装时候镜像下载的问题之外,其他都很流畅
资源消耗来讲,istio动不动8g就没有了,rio部署完只用了2G多
资源占用低,适合小公司使用,等后续istio解决了性能问题,也可以直接无痛转到istio上去。
不过目前rio还是beta版,不建议生产环境使用

好了,本次试玩到此结束,感谢阅读
.

Rancher极简service mesh产品Rio安装试玩(基于k3s)相关推荐

  1. linux 商业游戏,Ubuntu下安装试玩原生Linux版商业游戏Braid

    这款原生Linux版商业游戏Braid国外出售价大约在80美元左右.每年在Linux平台上发布的原生商业游戏是屈指可数,而且这些游戏的质量也是参差不齐. 不过这款原生Linux版商业游戏Braid还是 ...

  2. 阿里高级技术专家至简: Service Mesh 在超大规模场景下的落地挑战

    至简 阿里云高级技术专家 读完需要 20 分钟 速读仅需 5 分钟 随着微服务软件架构在互联网企业的广泛实践,新一代微服务软件架构技术悄然兴起, Service Mesh 便是其中之一.根据 Link ...

  3. service mesh istio-0.8安装测试

    简介 istio是一个service mesh开源实现,由Google/IBM/Lyft共同开发.与之类似的还有conduit,但是功能不如istio丰富稳定.架构图如下: istio-0.8版本是第 ...

  4. 7句话让Codex给我做了个小游戏,还是极简版塞尔达,一玩简直停不下来

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 什么,7 ...

  5. 百日完成国产数据库opengausss的开源任务--openGuass极简版3.0.0安装教程

  6. 2020 年 Service Mesh 技术展望

    背景 有外文指出,2020 年 Service Mesh 技术将有以下三大发展: 快速增长的服务网格需求: Istio 很难被打败,很可能成为服务网格技术的事实标准: 出现更多的服务网格用例,WebA ...

  7. Service Mesh:调度千军万马微服务,2.0妥妥的

    冠望 发自 凹非寺 量子位 报道 | 公众号 QbitAI 过去一年,继Kubernetes风靡,Service Mesh已成功上位变成当之无愧的技术网红. TA不但可以极大简化用户使用体验,还将大中 ...

  8. 美团技术:复杂环境下落地 Service Mesh 的挑战与实践

    在私有云集群环境下建设 Service Mesh ,往往需要对现有技术架构做较大范围的改造,同时会面临诸如兼容困难.规模化支撑技术挑战大.推广困境多等一系列复杂性问题.本文会系统性地讲解在美团在落地 ...

  9. 十问 | 关于Service Mesh 和Kubernets的最前沿思考

    小蚂蚁说: 在7月6日ArchSummit全球架构师峰会2018深圳站上,蚂蚁金服平台数据技术部的杨冰.Service Mesh布道师敖小剑.蚂蚁金服技术专家毛小云和来自阿里大文娱UC基础部的曾彬,四 ...

最新文章

  1. OpenSSL简介及在Windows、Linux、Mac系统上的编译步骤
  2. 换个角度聊系统稳定性建设(2021版)
  3. git ,报403错误,完美解决方案
  4. 基类和派生类中使用static_cast和dynamic_cast进行类型转换
  5. c语言中的字符变量用什么保留字来说明,第1、2章C语言基础练习题
  6. JAVA程序设计----集合基础之Collection
  7. 【每日一题】8月14日题目精讲 [SCOI2010]游戏
  8. 前端学习(3151):react-hello-react之DoM的diff算法
  9. 分布式系统建模与关键技术
  10. zookeeper-大数据Week6-DAY1-1-Zookeeper
  11. Windows核心编程学习九:利用内核对象进行线程同步
  12. eclipse idea 导入maven项目
  13. java实现modbus rtu协议与 modscan等工具(3)物理连接
  14. [计算机网络-03] 数据链路层
  15. 编译错误:In function `_sbrk_r‘:sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk‘
  16. pbl和sbl_ROKSO、SBL、XBL、PBL、DBL 是什么意思?
  17. Chrome和Firebox快捷键
  18. Eight (康托展开、BFS )
  19. java单根结构_Java语言程序设计中的单根结构
  20. 协同办公OA项目:搭建“自定义”OA办公系统,原来就这么简单!

热门文章

  1. 杰理6905A芯片修改提示音
  2. h5小游戏在线玩:万圣节互动游戏《逃离禁闭岛》通关完全攻略
  3. 华为云GaussDB首席架构师冯柯:摘取皇冠上的明珠,华为云数据库的创新与探索
  4. MongoDB的副本集
  5. 第五届蓝桥杯C/C++本科B组(真题试做)(6~8)
  6. BGA焊接开裂失效分析案例
  7. 单位: Baud,bits/s,波特率
  8. 太原理工web学习T答案
  9. 【LaTeX教程】七.LaTeX数学公式初步
  10. 北航 计算机学院 讲师 清华大学,楚中毅 中文主页 北京航空航天大学教师个人主页系统...