前言

Istio 使用功能强大的 Envoy 服务代理扩展了 Kubernetes,以建立一个可编程的、可感知的应用程序网络。Istio 与 Kubernetes 和传统工作负载一起使用,为复杂的部署带来了标准的通用流量管理、遥测和安全性。

下载 Istio

0. Istio 版本的支持状态

Istio版本对照表

Version Currently Supported Release Date End of Life Supported Kubernetes Versions Tested, but not supported
master No, development only
1.14 Yes May 24, 2022 ~January 2023 (Expected) 1.21, 1.22, 1.23, 1.24 1.16, 1.17, 1.18, 1.19, 1.20
1.13 Yes February 11, 2022 ~October 2022 (Expected) 1.20, 1.21, 1.22, 1.23 1.16, 1.17, 1.18, 1.19
1.12 Yes November 18, 2021 Jul 12, 2022 1.19, 1.20, 1.21, 1.22 1.16, 1.17, 1.18
1.11 No August 12, 2021 Mar 25, 2022 1.18, 1.19, 1.20, 1.21, 1.22 1.16, 1.17
1.10 No May 18, 2021 Jan 7, 2022 1.18, 1.19, 1.20, 1.21 1.16, 1.17, 1.22
1.9 No February 9, 2021 Oct 8, 2021 1.17, 1.18, 1.19, 1.20 1.15, 1.16
1.8 No November 10, 2020 May 12, 2021 1.16, 1.17, 1.18, 1.19 1.15
1.7 No August 21, 2020 Feb 25, 2021 1.16, 1.17, 1.18 1.15
1.6 and earlier No

注意:Kubernetes 1.22 删除了一些已弃用的 API,因此 1.10.0 之前的 Istio 版本将不再工作。如果您要升级 Kubernetes 版本,请确保您的 Istio 版本仍受支持。

1. 下载Istio安装包

到 Istio 发布 页面,下载针对你操作系统的安装文件, 或用自动化工具下载并提取最新版本(Linux 或 macOS):

$ curl -L https://istio.io/downloadIstio | sh -

上面的命令下载最新版本(用数值表示)的 Istio。 你可以给命令行传递变量,用来下载指定的、不同处理器体系的版本。 例如,下载 x86_64 架构的、1.6.8 版本的 Istio ,运行:

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.12.0 TARGET_ARCH=x86_64 sh -# 或者wget https://github.com/istio/istio/releases/download/1.12.0/istio-1.12.0-linux-amd64.tar.gz
tar zxvf istio-1.12.0-linux-amd64.tar.gz -C /usr/local/

2. 进入Istio安装目录

转到 Istio 包目录。例如,如果包是 istio-1.12.0

$ cd /usr/local/istio-1.12.0/

安装目录包含:

  • samples/ 目录下的示例应用程序
  • bin/ 目录下的 istioctl 客户端二进制文件 .

3. 添加环境变量 PATH

istioctl 客户端加入搜索路径(Linux or macOS):

$ export PATH=$PWD/bin:$PATH#或者设置环境变量
echo 'export ISTIO_HOME=/usr/local/istio-1.14.1' >> /etc/profile
echo 'export PATH=$PATH:$ISTIO_HOME/bin' >> /etc/profile
#加载变量
source /etc/profile

4. 验证效果(查看版本)

istioctl version➜  istio-1.12.0 istioctl version
no running Istio pods in "istio-system"
1.12.0
You have new mail.

安装 Istio

  1. 对于本次安装,我们采用 demo 配置组合。 选择它是因为它包含了一组专为测试准备的功能集合,另外还有用于生产或性能测试的配置组合。

    如果你的平台有供应商提供的配置组合,比如:Openshift,则在下面命令中替换掉 demo 配置项。更多细节请参阅你的 平台说明

    istioctl install --set profile=demo -y
    ✔ Istio core installed
    ✔ Istiod installed
    ✔ Egress gateways installed
    ✔ Ingress gateways installed
    ✔ Installation complete
    Making this installation the default for injection and validation.Thank you for installing Istio 1.12.  Please take a few minutes to tell us about your install/upgrade experience!  https://forms.gle/FegQbc9UvePd4Z9z7
    You have new mail.
    
  2. 给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy 边车代理:

    $ kubectl label namespace default istio-injection=enabled
    namespace/default labeled
    

部署示例应用

  1. 部署 Bookinfo 示例应用:

    $ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
    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
    
  2. 应用很快会启动起来。当每个 Pod 准备就绪时,Istio 边车代理将伴随它们一起部署。

    $ kubectl get services
    NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    details       ClusterIP   10.0.0.212      <none>        9080/TCP   29s
    kubernetes    ClusterIP   10.0.0.1        <none>        443/TCP    25m
    productpage   ClusterIP   10.0.0.57       <none>        9080/TCP   28s
    ratings       ClusterIP   10.0.0.33       <none>        9080/TCP   29s
    reviews       ClusterIP   10.0.0.28       <none>        9080/TCP   29s
    

$ kubectl get pods
NAME READY STATUS RESTARTS AGE
details-v1-558b8b4b76-2llld 2/2 Running 0 2m41s
productpage-v1-6987489c74-lpkgl 2/2 Running 0 2m40s
ratings-v1-7dc98c7588-vzftc 2/2 Running 0 2m41s
reviews-v1-7f99cc4496-gdxfn 2/2 Running 0 2m41s
reviews-v2-7d79d5bd5d-8zzqd 2/2 Running 0 2m41s
reviews-v3-7dbcdcbc56-m8dph 2/2 Running 0 2m41s

重新运行前面的命令,在执行下面步骤之前,要等待并确保所有的 Pod 达到此状态: 就绪状态(READY)的值为 `2/2` 、状态(STATUS)的值为 `Running` 。 基于你平台的不同,这个操作过程可能会花费几分钟的时间。3. 验证方方面面均工作无误。运行下面命令,通过检查返回的页面标题,来验证应用是否已在集群中运行,并已提供网页服务:

$ kubectl exec “$(kubectl get pod -l app=ratings -o jsonpath=‘{.items[0].metadata.name}’)” -c ratings – curl -s productpage:9080/productpage | grep -o “.*”

Simple Bookstore App ```

对外开放应用程序

此时,BookInfo 应用已经部署,但还不能被外界访问。 要开放访问,你需要创建 Istio 入站网关(Ingress Gateway), 它会在网格边缘把一个路径映射到路由。

  1. 把应用关联到 Istio 网关:

    $ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
    gateway.networking.istio.io/bookinfo-gateway created
    virtualservice.networking.istio.io/bookinfo created
    
  2. 确保配置文件没有问题:

    $ istioctl analyze
    ✔ No validation issues found when analyzing namespace: default.
    

确定入站 IP 和端口

按照说明,为访问网关设置两个变量:INGRESS_HOSTINGRESS_PORT。 使用标签页,切换到你选用平台的说明:

Minikube其他平台

设置入站端口:

$ export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
$ export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')

确认端口被成功的赋值给了每一个环境变量:

$ echo "$INGRESS_PORT"
32194
$ echo "$SECURE_INGRESS_PORT"
31632

设置入站 IP:

$ export INGRESS_HOST=$(minikube ip)

确认 IP 地址被成功的赋值给了环境变量:

$ echo "$INGRESS_HOST"
192.168.4.102

在一个新的终端窗口中执行此命令,启动一个 Minikube 隧道,它将把流量发送到你的 Istio 入站网关:

$ minikube tunnel
  1. 设置环境变量 GATEWAY_URL:

    $ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
    
  2. 确保 IP 地址和端口均成功的赋值给了环境变量:

    $ echo "$GATEWAY_URL"
    192.168.99.100:32194
    

验证外部访问

用浏览器查看 Bookinfo 应用的产品页面,验证 Bookinfo 已经实现了外部访问。

  1. 运行下面命令,获取 Bookinfo 应用的外部访问地址。

    $ echo "http://$GATEWAY_URL/productpage"
    
  2. 把上面命令的输出地址复制粘贴到浏览器并访问,确认 Bookinfo 应用的产品页面是否可以打开。

查看仪表板

Istio 和几个遥测应用做了集成。 遥测能帮你了解服务网格的结构、展示网络的拓扑结构、分析网格的健康状态。

使用下面说明部署 Kiali 仪表板、 以及 Prometheus、 Grafana、 还有 Jaeger

  1. 安装 Kiali 和其他插件,等待部署完成。

    $ kubectl apply -f samples/addons
    $ kubectl rollout status deployment/kiali -n istio-system
    Waiting for deployment "kiali" rollout to finish: 0 of 1 updated replicas are available...
    deployment "kiali" successfully rolled out
    

    如果在安装插件时出错,再运行一次命令。 有一些和时间相关的问题,再运行就能解决。

  2. 访问 Kiali 仪表板。

    $ istioctl dashboard kiali
    
  3. 在左侧的导航菜单,选择 Graph ,然后在 Namespace 下拉列表中,选择 default

    Kiali 仪表板展示了网格的概览、以及 Bookinfo 示例应用的各个服务之间的关系。 它还提供过滤器来可视化流量的流动。

    Kiali Dashboard

卸载 Istio

要从集群中完整卸载 Istio,运行下面命令:

$ istioctl x uninstall --purge

可选的 --purge 参数将删除所有 Istio 资源,包括可能被其他 Istio 控制平面共享的、集群范围的资源。

或者,只删除指定的 Istio 控制平面,运行以下命令:

$ istioctl x uninstall <your original installation options>

$ istioctl manifest generate <your original installation options> | kubectl delete -f -

控制平面的命名空间(例如:istio-system)默认不会删除, 如果确认不再需要,用下面命令删除它:

$ kubectl delete namespace istio-system

参考链接

Istio中文网站

Istio架构

https://istio.io/latest/zh/docs/setup/getting-started/#download

https://github.com/istio/istio/releases/tag/1.12.0

Istio1.12:安装和快速入门相关推荐

  1. Tushare介绍、安装及快速入门

    Tushare介绍.安装及快速入门 Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多 ...

  2. Python测试框架pytest(01)简介、安装、快速入门

    1.简介 pytest 是成熟的功能齐全的 Python 测试工具,可帮助你编写更好的程序. pytest 是一个使构建简单和可伸缩的测试变得容易的框架.测试具有表达性和可读性,不需要样板代码.几分钟 ...

  3. Kafka 安装及快速入门

    转载请注明原创地址为:http://www.54tianzhisheng.cn/2018/01/04/Kafka/ 介绍 官网:http://kafka.apache.org/ Apache Kafk ...

  4. 001-ant design安装及快速入门【基于纯antd的基本项目搭建】

    一.安装使用 1.1.安装 推荐使用 npm 或 yarn 的方式进行开发 npm install antd --save yarn add antd 1.2.浏览器引入 在浏览器中使用 script ...

  5. Docker快速安装与快速入门

    一.软件版本 操作系统:Centos 7.0 二.开始安装: http://www.daocloud.io/ 由于国内的源比较卡,所以我们推荐使用daocloud的方式,注册安装即可: [root@l ...

  6. 第二节:简易安装 和 快速入门Vue.js

    上一节我们介绍了Vue.js框架,这一节,我们可以来试着动手写点小代码了. 1 简易安装 要使用Vue.js,我们得先把它安装到我们的项目中,说明了简易安装,我们讲解的肯定是最简单的方法,先不管那些高 ...

  7. 3D绘图程序库Pangolin安装以及快速入门,使用教程介绍详细,使用Pangolin绘制点云、直线、轨迹等,设置按钮,进行多窗口、多线程操作,以及Pangolin怎么使用等等

    1. Pangolin介绍 常见的3D绘图的程序库有很多,MATLAB.Python的Matplotlib.OpenGL.在Linux上常用的一个3D绘图库是Pangolin,它是基于OpenGL完成 ...

  8. dubbo+zookeeper安装及快速入门

    环境安装 zookeeper 下载地址:(https://zookeeper.apache.org/doc/r3.4.14/) 1.运行apache-zookeeper-3.5.6-bin\bin\z ...

  9. selenium安装_Selenium快速入门知识1-环境安装

    Selenium可以通过Python开发,也可以通过Java.JavaScript等各种语言进行开发,本节仅对Python进行讲解. 如前面所属Selenium3.X对于2.X而言一个最基本的变化在于 ...

最新文章

  1. Python 程序设计(第二版)董付国_清华大学出版社_习题答案与分析【针对8.4及其之前的】
  2. inno打包软件出现 main方法找不到
  3. 服务器硬件电路设计书籍,家庭网关硬件接口电路设计大全——电路精选(3)...
  4. Spring整合Struts的几种最常见方式
  5. python 获取节假日
  6. declare-styleable:自定义控件的属性
  7. java的volatile是什么意思
  8. 正态分布的峰度和偏度分别为_ML中的正态分布
  9. 优秀案例|App内弹窗界面设计灵感
  10. c#获取屏幕上某坐标点的颜色
  11. %@ include file=%与jsp:include page=/
  12. redux工作原理简单入门
  13. 软考中级软件设计师笔记第一章计算机组成与体系结构
  14. 天线年会 闭幕式 ppt_OracleVS谷歌–闭幕式,陪审团审议版权阶段
  15. 从“制造”之城,到“智造”标杆,长沙何以站上发展新高地?
  16. MODBUS通讯协议内容讲解
  17. 用 emacs 浏览 C/C++ 项目
  18. mpa和pis_有关压力单位pis
  19. mysql+纵表和横表_mysql 横表和纵表转换
  20. Visio(一) Visio 键盘的上下左右快捷键 没办法移动图标了:取消掉Scroll lock指示灯即可。

热门文章

  1. 梯度下降法原理解析(大白话+公式推理)
  2. 1号店于刚:价格留不住客户 服务是王道
  3. mysql报错1099_MySQL错误ERROR 1099(HY000):表已被READ锁锁定,无法更新
  4. @JsonFormat注解和时区问题
  5. cocoaPods安装详解
  6. 我第一次成功安装CocoaPods的过程
  7. Unity3D C# 中foreach的GC产出(2023年带数据)
  8. sql查询之分页查询
  9. 给数据库表列取一个好的名字
  10. java 内省源码_java 内省