在Mac上安装Istio并使用,有丰富的监控Kiali、Grafana、Jaeger
我最新最全的文章都在南瓜慢说 www.pkslow.com,文章更新也只在官网,欢迎大家来喝茶~~
1 简介
之前在文章《服务网格Istio入门-详细记录Kubernetes安装Istio并使用》已经详细地介绍了如何在Linux系统上在Kubernetes安装并使用Istio,但毕竟服务器是要钱的,几毛钱一小时,是我格局小了,但我还是想在Mac上安装使用。
2 安装Istio
我的电脑已经安装了Kubernetes了,可以参考《Mac上使用Docker Desktop启动Kubernetes,踩坑后终于搞掂》,现在直接安装Istio。
下载对应的安装包:
$ curl -L https://istio.io/downloadIstio | sh -
目录如下:

把bin目录下的istioctl添加到PATH。
$ export ISTIO_HOME=/Users/larry/Software/istio/istio-1.10.3
$ export PATH=$PATH:$ISTIO_HOME/bin
检测是否可以执行安装:
$ istioctl x precheck
No issues found when checking the cluster. Istio is safe to install or upgrade!
没有问题,就可以开始安装了:
$ istioctl install
因为要下载镜像,所以需要花一点时间,成功安装如下:

可以做一些简单的检查:
# 检查istio-system命令空间下的Pod
$ kubectl get pod -n istio-system
# 检查资源
$ kubectl api-resources | grep istio
结果如下:

3 使用istio
3.1 注入代理
Istio默认不会给其它Pod注入代理,需要给Namespace添加对应的标签才可以:
$ kubectl label namespace default istio-injection=enabled
但对于现有的Pod,也还是不会注入的,没关系,我们来使用官方提供的示例,新创建一些资源:
$ kubectl apply -f istio-1.10.3/samples/bookinfo/platform/kube/bookinfo.yaml
因为是第一次启动,要下载镜像,所以要花比较长的时间,如下面命令观察:
$ watch 'kubectl get pod -l app -l version'
几分钟后,终于搞定:

可以看到每个Pod都有两个Container,一个是应用的,一个是代理的。
3.2 安装监控插件
为了更好地可视化地监控应用,我们来安装一些插件:
$ kubectl apply -f istio-1.10.3/samples/addons
同样的等待:
$ watch 'kubectl get pod -n istio-system'
大概5分钟左右,成功启动了:

可以看到许多很常见的监控软件:Grafana、Prometheus等。
3.3 在外部访问资源
Istio给我们提供了Gateway的功能,我们给应用创建一个Gateway对外暴露服务:
$ kubectl apply -f istio-1.10.3/samples/bookinfo/networking/bookinfo-gateway.yamlgateway.networking.istio.io/bookinfo-gateway createdvirtualservice.networking.istio.io/bookinfo created$ kubectl get gatewayNAME AGEbookinfo-gateway 17s$ kubectl get virtualservices.networking.istio.ioNAME GATEWAYS HOSTS AGEbookinfo ["bookinfo-gateway"] ["*"] 29s
因为我很早之前就安装了Ingress Controller(Kubernetes用Helm安装Ingress并踩一下使用的坑),为了防止冲突,把原来的给删掉:
# 安装命令,不执行# helm install azure-ingress azure/nginx-ingress# 删除Ingress Controllerhelm delete azure-ingress
然后就可以正常访问应用了:http://localhost/productpage

我们可以多点击几次,多刷新几次,可以多产生一些流量,以便后续查看监控。
3.4 查看监控
同样,我们也需要在外部访问监控的内容,访问kiali如下,会直接帮我们打开浏览器:
$ istioctl dashboard kialihttp://localhost:20001/kiali
可以查看完整清晰的流量走向图,知道有什么组件,它们之间的调用关系是怎样的:

查看特定的组件productpage,会以它为中心显示与它直接关联的应用和关系:

当然,也可以查看Grafana:
$ istioctl dashboard grafana
界面如下:

查看Jaeger:
$ istioctl dashboard jaeger
界面如下:

查看Prometheus:
$ istioctl dashboard prometheus
界面如下:

总结
Istio给我们提供了很多有用的特性,光监控方面就非常丰富,更多细节我们后续再讨论吧。
在Mac上安装Istio并使用,有丰富的监控Kiali、Grafana、Jaeger的更多相关文章
- 在Mac上安装IntelliJ IDEA
这篇文章旨在介绍如何在Mac系统上安装IntelliJ IDEA,至于IntelliJ IDEA的介绍和使用方法,大家另行查阅,本篇的文章不再详细阐述. 简短解说,IntelliJ IDEA是可以用来 ...
- Mac上安装brew
用过ubuntu系统的都知道,上面有一个命令apt-get 很方便可以快速的安装很多软件 特别lamp环境 都是一键安装. 在mac上也有类似的命令 brew brew用法可以访问官网地址 http ...
- mac 上安装服务,查看服务,重启和关闭
首先了解下的Mac的 homebrew ,官网:https://brew.sh/index_zh-cn.html 简单的说: Homebrew 能干什么? 答:使用 Homebrew 安装 Apple ...
- Mac上安装brew 包管理工具
Mac 上的包管理工具对于开发者来说是一件非常方便的工具,能够有效的对包进行管理. 所以这篇博客就来简单的讲一下brew 的安装和一些基础命令. brew 全称叫做Homebrew . 1. 首先来说 ...
- Mac上安装Charles进行抓包全流程设置
安装 -- 官网下载最新版的Charles版本,按照提示安装即可 破解 -- https://blog.csdn.net/qq_25821067/article/details/79848589. M ...
- 【mac上安装&配置&使用git】
转自:https://www.jianshu.com/p/7edb6b838a2e 目录 安装git 创建ssh key.配置git 提交本地项目到GitHub 一.安装Git MAC 上安装Git主 ...
- Mac上安装PHP、Apache、MySQL
Mac自带php5.6版本,要升级到php7.3 步骤如下 1,brew 安装php ,如果没有安装,访问https://brew.sh/index_zh-cn安装在终端输入以下内容,不用指定安装ph ...
- Mac上安装第三方应用显示包资源破坏解决办法
Mac上安装第三方应用显示包资源破坏解决办法 步骤1:Spotlight搜索(快捷键:command+空格或右上角搜索的符号):搜索 “终端”步骤2:直接复制粘贴 sudo spctl --maste ...
- 002-docker安装-mac上安装docker,17.06在CentOS7 64位机器上安装
一.mac上安装docker 1.下载 通过这个链接下载:https://download.docker.com/mac/stable/Docker.dmg 2.安装 将 Moby 的鲸鱼图标拖拽到 ...
随机推荐
- 从零实操基于WSL2 Docker部署Asp.Net Core项目
前言 平日在公司里都是基于阿里Teambition中的飞流进行Docker部署Api项目或服务,已经习惯了那一套成熟的操作流程,开发和部署确实快捷方便,但是还没在自己的电脑上进行操作过,特别是Wind ...
- 7、解决windows10家庭版无法远程连接服务器的问题
(1)方法一: 升级windows10为专业版,因为win10家庭版没有组策略: (2)方法二:通过远程命令: 同时按住"win+r"键调出"运行",在方框内输 ...
- 精尽Spring Boot源码分析 - Condition 接口的扩展
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...
- 关于PHP导出数据超时的优化
一般情况下,导出超时可能都是以下三种情况: 一.sql语句复杂,查询时间过长: 二.处理查询后数据逻辑冗余: 三.数据量过大导致响应超时. 接下来分别给出这三种情况的优化建议. 一.sql语句复杂,查 ...
- 自然语言处理(NLP)——简介
自然语言处理(NLP Natural Language Processing)是一种专业分析人类语言的人工智能.就是在机器语⾔和⼈类语言之间沟通的桥梁,以实现人机交流的目的. 在人工智能出现之前,机器 ...
- Linux:Linux操作防火墙命令
首先查看Linux的防火墙是否关闭 firewall-cmd Linux上新用的防火墙软件,跟iptables差不多的工具. firewall-cmd --state # 显示防火墙状态 system ...
- Flyway:Spring Boot中使用Flyway来管理数据库版本
Flyway简介 Flyway是一个简单开源数据库版本控制器(约定大于配置),主要提供migrate.clean.info.validate.baseline.repair等命令.它支持SQL(PL/ ...
- python logger 动态设置日志名
代码: import logging logger = logging.getLogger('') logger.setLevel(level=logging.INFO) def setLogName ...
- TCP/UDP/HTTP的区别和联系(转载)
一.TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据. 关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:"我们在传 ...
- Vue使用PrintJs自定义打印表格模板
这俩天客户提了个需求,需要打印俩个自定义的表格模板,一开始想到的是打印Json表格,但是发现表格样式不符合要求,后来想着打印html,自己生成html模板然后打印,基本可以满足客户的需求,废话不多说, ...