本文来自Rancher Labs

Rancher的理念是Run Kubernetes Everywhere,Rancher 2.3中许多重大更新,让这一理念的实现又向前一步。

其中,最重要的两个特性是集成了Istio以及对Windows的支持。本文我们将主要讨论如何使用通过Rancher UI提供的Istio支持,并通过Kiali dashboard进行可视化。

前期准备:

  • 正在运行的Kubernetes集群

  • 安装Rancher并导入该集群

在本例中,我们将使用CIVO Cloud上的大型k3s托管集群,并且已经完成Rancher App的安装(在Civo Marketplace的Rancher应用程序将会在集群上安装Rancher,并将集群导入其中)。集群的设置可以参考以下步骤:

https://medium.com/@SaiyamPathak/managed-k3s-is-it-a-thing-9397799c38a

启动集群之后,在集群创建过程中从marketplace选择Rancher进行安装。Civo将会启动Rancher server并导入集群。

集群准备就绪后,你将能看到Rancher 2.3的dashboard,它能够支持Istio和Kiali。让我们来探索一下这个dashboard吧!

集群创建之后,你可以下载kubeconfig,并连接集群。然后查看Rancher server以及cattle-agents是否起来并且运行。

kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-node-79ed Ready worker 96m v1.15.4-k3s.1
kube-master-bca5 Ready master 96m v1.15.4-k3s.1 kubectlg get pods -n cattle-system
NAME READY STATUS RESTARTS AGE
cattle-5669c57dcf-tw65t 1/1 Running 0 3h27m
cattle-node-agent-8lppr 1/1 Running 0 3h27m
cattle-node-agent-g5f6f 1/1 Running 0 3h27m
cattle-cluster-agent-587b6d44cf-ppnjd 1/1 Running 0 3h27m

为了访问Rancher UI,创建一个ingress,rancher-ingress.yaml如下:

>> kubectl apply -f rancher-ingress.yaml
ingress.extensions/cattle-ingress created kubectl get ingress -n cattle-system NAME HOSTS ADDRESS PORTS AGE
cattle-ingress * 172.31.0.189 80 32s

现在如果你访问任何节点ip,你都将看到Rancher server正在运行。

创建一个密码,保存URL。随后你应该能够看到导入的集群。

通过Rancher UI启用Istio

文档中是这样描述Istio的:

使用云平台的企业或组织可以从其中体会到很多益处。但是不可否认的是,采用云技术会对DevOps团队造成压力。开发人员必须使用微服务来构建可移植性,同时,运维人员管理超大型混合云和多云部署。而服务网格使得微服务更加易用,其中Istio可以帮助你连接、保护、控制和观察服务。

在很大程度上,Istio有助于降低部署的复杂性,并减轻开发团队的负担。它是一个完全开源的服务网格,可以在现有的分布式应用程序上透明地注入一层。同时,它也是一个平台,包括可将其集成到任何日志记录平台、遥测或策略系统中的各种API。Istio的多样功能可以让你能够成功、高效地运行分布式微服务架构,并提供统一地方式来保护、连接和监控微服务。

那么,现在我们开始通过Rancher UI中启用Istio,并部署吧。

要启用Istio,你需要访问UI上方的菜单栏,其路径是:工具> Istio。你可以更改许多配置选项。而现在,我想让所有配置都保持默认状态并将ingress网关设置为True。启用这一功能还将启用监控功能,这是Istio正常运行的先决条件。

启用之后,你将可以看到监控和Istio pod在命名空间cattle-prometheus(用于监控)和istio-system(用于istio)下出现。

>> kubectl get pods -n istio-system

NAME                                      READY   STATUS    RESTARTS   AGE
istio-citadel-6bb9c9f6fb-md9f8 1/1 Running 0 6m16s
istio-tracing-64d646945-xm4sm 2/2 Running 0 6m15s
istio-policy-68959c7999-5kmdb 2/2 Running 1 6m16s
istio-galley-67848cd58-g5tbt 1/1 Running 0 6m16s
kiali-5f8f876bd5-6djxf 2/2 Running 0 6m16s
istio-telemetry-778bfdcf74-ps9vl 2/2 Running 1 6m16s
istio-pilot-7546b9fdcc-rbxj8 2/2 Running 0 6m16s
istio-ingressgateway-6f877dd689-rskn4 1/1 Running 0 6m16s
istio-sidecar-injector-69c97ddbb5-x7jcv 1/1 Running 0 6m16s >> kubectl get pods -n cattle-prometheus
NAME READY STATUS RESTARTS AGE
prometheus-operator-monitoring-operator-79484b9c6f-zshlq 1/1 Running 0 7m42s
exporter-node-cluster-monitoring-wnxtc 1/1 Running 0 7m39s
exporter-node-cluster-monitoring-k68fb 1/1 Running 0 7m39s
grafana-cluster-monitoring-5d676d89c5-vkbzm 2/2 Running 0 7m39s
prometheus-cluster-monitoring-0 5/5 Running 1 7m15s
exporter-kube-state-cluster-monitoring-5dfd658dc-pn8mt 1/1 Running 0 7m39s

现在,我们来进行Istio部署示例,生成流量并在Kiali dashboard中查看它。

我们将为示例应用程序创建deployment、Gateway以及虚拟服务,如下所示:

kubectl  label namespace default istio-injection=enabled
namespace/default labeled kubectl apply -f service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created kubectl apply -f
gateway.networking.istio.io/bookinfo-gateway created kubectl apply -f
virtualservice.networking.istio.io/bookinfo created

生成流量:

现在,应用程序已经部署,你可以通过Istio gateway查看它。

>> kubectl  get pods

NAME                              READY   STATUS    RESTARTS   AGE

details-v1-74f858558f-m5tsx       2/2     Running   0          10m
ratings-v1-7855f5bcb9-lkhgg 2/2 Running 0 10m
productpage-v1-8554d58bff-llnqh 2/2 Running 0 10m|
reviews-v2-d6cfdb7d6-rl4zk 2/2 Running 0 10m
reviews-v3-75699b5cfb-crdrd 2/2 Running 0 10m
reviews-v1-59fd8b965b-rmct2 2/2 Running 0 10m >> kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 192.168.128.1 <none> 443/TCP 140m
details ClusterIP 192.168.154.118 <none> 9080/TCP 10m
ratings ClusterIP 192.168.207.69 <none> 9080/TCP 10m
reviews ClusterIP 192.168.141.42 <none> 9080/TCP 10m
productpage ClusterIP 192.168.128.87 <none> 9080/TCP 10m

点击Test用户和普通用户,来生成一些流量。

从UI上方的菜单栏中【资源】项,选择Istio。你可以看到以下图表:

点击屏幕上的Kiali图标。

Kiali

Kiali是Istio的可视化控制台,它具有服务网格配置功能。它通过推断拓扑来帮助理解你的服务网格架构并提供你的网格的健康状态。此外,Kiali还提供了详细的指标,并且其集成了基本的Grafana,因此可用于高级查询。还集成了Jaeger,可提供分布式追踪。

您可以查看已部署应用程序的完整拓扑以及流程。

下面是已经部署的应用程序的图表:

以下是其他图表:

服务图表

版本化应用程序图

工作负载图

Jaeger

受Dapper和OpenZipkin的启发,Jaeger被设计为一个开源分布式跟踪系统,由Uber Technologies发布。它用于监控、诊断基于微服务的分布式系统,包括:

  • 分布式上下文传播(Distributed Context Propagation)

  • 分布式事务监控

  • 根源分析(Root cause analysis)

  • 服务依赖分析

  • 性能/延迟优化

Jaeger UI

Jaeger 查询

总 结

在本文中,我们讨论了在Rancher 2.3.x中如何安装Istio并使用Kiali可视化服务网格。我们还部署了一个示例应用程序并生成了一些流量,还使用Kiali和Jaeger查看它们。

如果你还想了解更多关于Istio、Kiali以及Jaeger的内容,欢迎访问以下网站观看视频:

https://space.bilibili.com/430496045

开箱即用!使用Rancher 2.3 启用Istio初体验的更多相关文章

  1. SpringBoot一统江湖

    一 SpringBoot简介 SpringBoot是Spring框架的一个新子项目 用于创建Spring4.0项目 它的开发始于2013年 2014年4月发布1.0.0版本 它可以自动配置Spring ...

  2. 如何使用Rancher在OpenStack上创建K8S集群

    不可否认的是,OpenStack仍然是可行的云操作系统,并且被全世界许多互联服务提供商使用.而Rancher是业界最为广泛使用的Kubernetes管理平台,通过简洁直观的GUI集中管理企业IT中的多 ...

  3. 【转】Rancher 2.0 里程碑版本:支持添加自定义节点!

    原文链接: http://mp.weixin.qq.com/s?__biz=MzIyMTUwMDMyOQ==&mid=2247487533&idx=1&sn=c70258577 ...

  4. 【分享】2017 开源中国新增开源项目排行榜 TOP 100

    2017 年开源中国社区新增开源项目排行榜 TOP 100 新鲜出炉! 这份榜单根据 2017 年开源中国社区新收录的开源项目的关注度和活跃度整理而来,这份最受关注的 100 款开源项目榜单在一定程度 ...

  5. SpringBoot整合篇

    目录 SpringBoot整合篇 SpringBoot简介 SpringBoot运行 SpringBoot目录结构 整合JdbcTemplate @RestController 整合JSP 整合JPA ...

  6. kubernetes namespace Terminating

    1.kubectl get namespace annoying-namespace-to-delete -o json > tmp.jsonthen edit tmp.json and rem ...

  7. 直击KubeCon北美峰会:开发者们不得不关注的10大项目

    今天晚上8:30,第三期在线培训<如何通过Istio进行金丝雀发布>将准时开播,内容包括Istio原理.金丝雀发布.在Rancher中启用Istio,报名及观看链接:https://www ...

  8. 实操教程丨使用Pod安全策略强化K8S安全

    本文来自Rancher Labs 什么是Pod安全策略? Kubernetes Pod安全策略(PSP)是Kubernetes安全版块中极为重要的组件.Pod安全策略是集群级别的资源,用于控制Pod安 ...

  9. 从零构建Java项目(Maven+SpringBoot+Git) #02 奥斯丁项目

    前两天我说要写个项目来持续迭代,有好多小伙伴都表示支持和鼓励,项目的第一篇这不就来了么~我给项目取了个名字,英文名叫做:austin,中文名叫做:奥斯丁 名字倒没有什么特别的含义,我单纯觉得这个名字好 ...

随机推荐

  1. 详解TableStore模糊查询——以订单场景为例

    背景 订单系统在各行各业中广泛应用,为消费者.商家后台.促销系统等第三方提供用户.产品.订单等多维度的管理和查询服务.为了挖掘出海量订单数据的潜能,丰富高效的查询必不可少.然而很多时候并不能给出完整准 ...

  2. jq获取单选框、复选框、下拉菜单的值

    1.<input type="radio" name="testradio" value="jquery获取radio的值" /> ...

  3. 如何编程实现快速获取一个整型数中的bit流中1的个数

    int one_in_unsigned(unsigned n) { n =(n & ) & 0x55555555); n =(n & ) & 0x33333333); ...

  4. poj 1263 Reflections (Simple Geometry)

    1263 -- Reflections 简单计算几何.题目给出射线以及若干个不相交的圆,求出射线会在哪些圆上反弹,依次写出反弹球的编号. 代码如下: #include <cstdio> # ...

  5. 推荐几个web前端比较实用的网站

    第一次写博客,说实在的有点紧张和兴奋,哈哈哈哈,本人工作了有两年的时间,平时也有做笔记的习惯,但是都做得乱七八糟的,所以就想通过写博客来记录.好了,废话不多说了,先来几个觉得在工作中使用到的,还不错的 ...

  6. iOS设备 微信h5页面回退 内容不刷新的问题

    原因分析: 一.android 浏览器 包括微信的开发者工具 都是ok的返回可以刷新页面但是唯有iOS不行. 二.iOS 浏览器原因:history.go(-1)返回上一页后,页面内容并不会刷新.在B ...

  7. H3C PPP MP配置示例二(续)

  8. thinkphp3.2.3中设置路由,优化url

    需求: 访问这个目录的时候,http://xx.com/p-412313要重定向到(暂且这么叫)http://xx.com/Home/Blog/index/id/412313 就是看着好看 我的应用目 ...

  9. CentOS 7 安装 LNMP 环境(PHP7 + MySQL5.7 + Nginx1.10)

    记录下在CentOS 7 安装 LNMP 环境(PHP7 + MySQL5.7 + Nginx1.10)过程笔记. 工具 VMware版本号 : 12.0.0 CentOS版本 : 7.0 一.修改 ...

  10. python单例模式的实现与优化

    python单例模式的实现与优化 阅读目录(Content) 单例模式 实现单例模式的几种方式 1.使用模块 2.使用装饰器 3.使用类 4.基于__new__方法实现(推荐使用,方便) 5.基于me ...