系列文章:linux
总目录索引:九析带你轻松完爆 istio 服务网格系列教程安全
目录bash
1 前言服务器
2 微服务的历史微信
3 istio网络
4 istio 使用架构
4.1 下载 istioapp
4.2 安装 istio负载均衡
4.3 配置 istioctl 工具路径框架
4.4 实现 istioctl 自动补全功能
4.5 安装学习版 istio
4.6 卸载 istio
5 总结
1 前言
若是你对博客有任何疑问,请加微信沟通:
2 微服务的历史
微服务从马丁提出到今天为止,大致上通过了四代。
第一代(1.0 时代):服务发现阶段。单体服务发展到微服务后,原先的通讯方式从进程内函数调用发展到了不一样服务器上的不一样服务之间的进程调用,这样的架构变化,首先要解决的关键问题就是服务的注册与发现。表明技术即是 dubbo 和 grpc、brpc 框架之争。
第二代(2.0 时代):当服务发现问题解决了以后,紧接着带来的挑战即是服务治理。何为服务治理,就是除了服务之间通信以外,还须要更深层次考虑到服务之间调用的失败重试、容错、降级、监控、安全、灰度、流控能问题。
第三代(3.0 时代):微服务 2.0 时代带来了解决方案的百花齐放,各方你方唱罢,我方登场,相同问题的不一样解决方案纷纷亮相,一时间风云际会,好不热闹。好比网关解决方案就有 zuul、gateway;全链路监控就有 pinpoint、zipkin、jaeger 等。各类服务治理的解决方案层出不穷带来了不少的积极做用,但负面影响也随之而来,那即是标准的不统1、维护方式各异。服务治理变成了各类中间件的相互嫁接,服务治理的好坏全靠工程师的技术水平高低。基于此,服务治理的标准化、一致化需求愈来愈强烈,因而服务网格便应运而生。服务网格的思想即是将服务治理标准化,并统一下沉到基础设施层。就像 50、60 年代的美国,当时帮派林立,不一样地盘治理的好坏主要依靠各个帮派屌不屌,可是到了后来政府能力逐渐强大和稳定,不少地下秩序再也不依靠黑帮,而统一让政府规则化同样的道理。
第四代(4.0 时代):无服务时代,即 serveless 时代,说的时髦点就是去中心化时代。这个目前还并不成熟,本文先略去不谈。
3 istio
istio 就是微服务 3.0 时代的产物,是 service mesh 的表明性产品。由谷歌和 IBM 联手打造。借助谷歌的拳头产品 k8s,顷刻完爆众神。istio 跟 k8s 之间到底什么关系?你能够这么来理解,k8s 至关于王健林,istio 至关于王思聪。怎么说呢?k8s 负责打地基,打造基础设施,istio 负责在地基之上整合各类服务模式。你们都知道有个女的去万达影院看电影抱怨爆米花少,结果王思聪承诺给她终生免费提供爆米花的事吧。这就至关于请求失败并重试成功的典型服务治理案例。
istio 包括以下特性:
1 http, gRPC, WebSocket 和 TCP 通讯的自动负载均衡
2 经过丰富的路有规则、重试、故障转移和故障注入对流量行为进行细粒度控制
3 可插拔的策略层和配置 API,支持访问控制,速率限制和配额
4 集群内全部流量的自动度量,日志和跟踪,包括集群的入口和出口
5 经过强大的基于身份和身份验证和受权,在集群中实现安全的服务间通讯
简单总结即是:istio 负责网络数据包的流量管理(traffic management)、服务的安全保护(secure)、策略(policy,好比黑白名单制定)和可观察(observability,好比监控)。
4 istio 使用
逼逼完了理论后(其实我最不喜欢就是扯理论),开始进入完爆 istio 环节。
4.1 下载 istio
在玩 istio 以前,必需要有前置条件,那就是你要先把 k8s 完爆了,你须要首先搭建 k8s 环境。怎么搭建 k8s,你能够参考本人的《一分钟搭建 k8s 教程》,不用谢。
使用以下语句下载 istio,下载速度会有点慢。至于有多慢?谁试谁知道。并且时不时会断,因此你要时刻关注,若是失败了,须要从新执行。这种感受就好像你在小便,后面老是有人推你,让你整个过程很是不畅,很是不爽。
curl -L https://istio.io/downloadIstio | sh -
在下载过程当中,若是你遭遇以下错误:
Unable to get latest Istio version. Set ISTIO_VERSION env var and re-run. For example: export ISTIO_VERSION=1.0.4
你须要设置一下你要下载的 istio 版本,语句以下:
export ISTIO_VERSION=1.4.5
下载成功后的截图以下:
4.2 安装 istio
安装 istio 前,首先解压缩:
tar -zxvf istio-1.4.5-linux.tar.gz
解压缩后的目录结构截图以下:
关键目录说明以下:
install/kubernetes # istio 资源文件
samples # istio 样例
bin/istioctl # istio 客户端工具,用来手动注入 envoy
4.3 配置 istioctl 工具路径
istioctl 是 istio 的客户端工具,其做用是手动注入 envoy 做为容器的 sidecar(边车)。什么是 sidecar?你就把它当成鸡你太美的经纪人,懂了没?就是负责跟外界打交道的。配置方式以下:
cd istio-1.4.5
export PATH=$PATH:$PWD/bin
配置完,在 bash 中就能够经过 Tab 键自动补全 istioctl 命令了。可是这样够吗?完美吗?固然不。咱们还有更高的要求。
由于 istioctl 有不少配置项,仅仅使用 tab 键只能自动补全 istioctl,可是没法自动补全 istioctl manifest 相似这样的子命令。所以咱们须要设置加强自动补全功能。
4.4 实现 istioctl 自动补全功能
将 istio 安装包内 tools 目录下的 istioctl.bash 文件拷贝到用户根目录下:
cp istio/istio-1.4.5/tools/istioctl.bash ~
编辑 ~/.bash_profile 文件,在文件末尾添加以下内容:
source ~/istioctl.bash
添加完毕后,加载配置使配置生效:
source ~/.bash_profile
而后输入 istioctl 而后按两次 tab 键,发现加强自动补全功能已经生效:
4.5 安装学习版 istio
为了下降学习成本,咱们选择安装学习版本的 istio。若是你想直接在生产环境安装 istio,能够参考我后续的章节。
执行以下语句安装 istio 学习版:
istioctl manifest apply --set profile=demo
安装后的截图以下:
不要一看到 Installation complete 就高兴到尖叫!由于安装完毕不报错并不意味着你就成功了,就像你看到一个美丽、性感、火辣、清纯、高贵、华丽集一身的女人向你走过来时就觉得人家以为你长得帅想泡你同样的道理。
使用以下命令查看一下 istio 的服务状态:
kubectl get svc -n istio-system
执行结果以下图所示:
服务使用 LoadBalancer 类型通常是在第三方云厂商支持下才有用。若是你是在本身搭建的 k8s 集群环境下通常使用 NodePort 类型。执行以下语句完爆:
kubectl patch svc -n istio-system istio-ingressgateway -p '{"spec": {"type": "NodePort"}}'
执行完毕后,再次查看 svc,发现原来的 LoadBalancer 类型已经被修改成 NodePort 类型,此外 external-ip 也从 pending 状态变成了 <none>(即:不须要)状态。
查看 istio 的 pod 运行状态:
kubectl get pod -n istio-system
运行状态截图以下,全部 pod 状态都是 running 状态:
自此,整个 istio 环境就被你轻松完爆了。如今你能够停下来,上厕所,喝水和尖叫了。
4.6 卸载 istio
可是假如你以为不够爽,光有创建的快感,没有破坏的快感老是以为技术人生不够圆满的话,你能够执行以下语句轻松完爆 istio。
istioctl manifest generate --set profile=demo | kubectl delete -f -
5 总结
好了,一切都回到了原点。这种感受像极了你拥有了一个女人,而后蹂躏了一番后,又抛弃她的感受。可是望着消失了一切后的黑乎乎的屏幕后,你或许点燃了一颗烟,问问本身,抛弃的感受是否真的快乐?若是没有,你就把文章拉倒起点,再来一遍吧。也许当你操做完后,你会从新追回你深爱的她。