文档章节

开箱即用!使用Rancher 2.3 启用Istio初体验

RancherLabs
 RancherLabs
发布于 01/09 10:54
字数 1695
阅读 921
收藏 7

本文来自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

© 著作权归作者所有

RancherLabs
粉丝 106
博文 279
码字总数 608725
作品 0
深圳
程序员
私信 提问
加载中

评论(1)

hotsmile
hotsmile
收藏一下!!!!
Istio 管理面板 - Naftis

Naftis 是一个基于 web 的 Istio dashboard,通过任务模板的方式来帮助用户更方便地执行 Istio 任务。 用户可以在 Naftis 中定义自己的任务模板,并填充变量来构造单个或多个构造任务实例,从...

Newt0n
2018/10/25
5.8K
0
小米正式开源 Istio 管理面板 Naftis

近年来服务网格(Service Mesh)已成为各大公司关注重点,各大公司纷纷开始调研 Service Mesh 相关架构。作为 Service Mesh 中的佼佼者, Istio 诞生之初就已吸引众多目光。 作为基础设施层,...

Newt0n
2018/10/25
12.2K
7
Kiali项目,Istio服务网的可观察性

Kiali提供了问题的答案我的Istio服务网格中的微服务是做什么的? 描述 微服务架构将整体结构分解成许多组合在一起的小块。已经出现了用于保证服务之间的通信的模式,例如容错(通过超时,重试...

xiaomin0322
2018/07/23
274
0
使用 Istio Service Mesh 管理微服务

使用Istio Service Mash管理微服务 今天的文章通过Istio开源项目展示如何为Kubernetes管理的微服务提供可见性,弹性,安全性和控制。 服务是现代软件体系结构的核心。比起复杂庞大的整体,部...

JFrog中国
2017/12/06
0
0
用TypeScript构建Webpack+Vue项目

前言 都了, 你还在用一键生成项目吗, 都了, 你还没有用过吗 如果你使用过, 一定会感慨开(ban)发(zhuan)体验真爽 但是, 如果你尝试过自己动手去构建一个项目, 你可能会发现这里面会有很多的坑...

atbulbs
2019/09/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java使用influxDB时序数据库

本人写的这篇文章主要是介绍java如何使用influxDB时序数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 废话不多说,直接上代码: 1、pom.xml引入相关jar文件,如下: <!-- 引入...

SimonTao
5分钟前
0
0
jsp web 大文件上传源代码

我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提...

东方雨
32分钟前
53
0
读懂这一篇,集群节点不下线

作者 | 声东 阿里云售后技术专家 导读:排查完全陌生的问题、完全不熟悉的系统组件,是售后工程师的一大工作乐趣,当然也是挑战。今天借这篇文章,跟大家分析一例这样的问题。排查过程中,需...

阿里巴巴云原生
38分钟前
121
0
如何让scss变量能够当做js变量来使用

如何让scss变量能够当做js变量来使用 当前我们使用scss变量有两个痛点: 需要手动导入 无法与js建立联系或者很难,后续不能在此基础上做一些骚操作 为了解决这两个问题,我们以创建js文件以j...

念其蔚蓝
48分钟前
83
0
Java日期加减

public static String getDate(String dateGiven,Integer day) throws Exception{ SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd"); Date date=sdf.parse(dateGiven);......

那个猩猩很亮
57分钟前
117
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部