开始

    如果您已经熟悉 Istio 或对安装其他配置文件或更高级的部署模型感兴趣, 请遵循。

    此 demo 配置文件不适用于性能评估。它旨在展示 Istio 高水平跟踪和访问日志的功能。

    要开始使用 Istio,只需遵循以下三个步骤:

    1. 搭建平台
    2. 安装 Istio

    在安装 Istio 之前,需要一个运行着 Kubernetes 的兼容版本的 cluster。

    Istio 1.8 已经在 Kubernetes 版本 1.16, 1.17, 1.18, 1.19 中测试过。

    • 通过选择合适的 来创建一个集群。

    有些平台提供了 managed control plane,您可以使用它来代替手动安装 Istio。如果您选择的平台支持这种方式,并且您选择使用它,那么,在创建完集群后,您将完成 Istio 的安装。因此,可以跳过以下说明。

    下载 Istio

    下载 Istio,下载内容将包含:安装文件、示例和 命令行工具。

    1. 访问 Istio release 页面下载与您操作系统对应的安装文件。在 macOS 或 Linux 系统中,也可以通过以下命令下载最新版本的 Istio:

    2. 切换到 Istio 包所在目录下。例如:Istio 包名为 istio-1.8.0,则:

      1. $ cd istio-1.8.0

      安装目录包含如下内容:

      • install/kubernetes 目录下,有 Kubernetes 相关的 YAML 安装文件
      • samples/ 目录下,有示例应用程序
      • bin/ 目录下,包含 的客户端文件。istioctl 工具用于手动注入 Envoy sidecar 代理。
    3. istioctl 客户端路径增加到 path 环境变量中,macOS 或 Linux 系统的增加方式如下:

      1. $ export PATH=$PWD/bin:$PATH
    4. 在使用 bash 或 ZSH 控制台时,可以选择启动 auto-completion option

    1. 安装 demo 配置

    2. 为了验证是否安装成功,需要先确保以下 Kubernetes 服务正确部署,然后验证除 jaeger-agent 服务外的其他服务,是否均有正确的 CLUSTER-IP

      1. $ kubectl get svc -n istio-system
      2. grafana ClusterIP 172.21.211.123 <none> 3000/TCP 2m
      3. istio-citadel ClusterIP 172.21.177.222 <none> 8060/TCP,15014/TCP 2m
      4. istio-egressgateway ClusterIP 172.21.113.24 <none> 80/TCP,443/TCP,15443/TCP 2m
      5. istio-ingressgateway LoadBalancer 172.21.144.254 52.116.22.242 15020:31831/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:30318/TCP,15030:32645/TCP,15031:31933/TCP,15032:31188/TCP,15443:30838/TCP 2m
      6. istio-pilot ClusterIP 172.21.105.205 <none> 15010/TCP,15011/TCP,8080/TCP,15014/TCP 2m
      7. istio-policy ClusterIP 172.21.14.236 <none> 9091/TCP,15004/TCP,15014/TCP 2m
      8. istio-sidecar-injector ClusterIP 172.21.155.47 <none> 443/TCP,15014/TCP 2m
      9. istio-telemetry ClusterIP 172.21.196.79 <none> 9091/TCP,15004/TCP,15014/TCP,42422/TCP 2m
      10. jaeger-agent ClusterIP None <none> 5775/UDP,6831/UDP,6832/UDP 2m
      11. jaeger-collector ClusterIP 172.21.135.51 <none> 14267/TCP,14268/TCP 2m
      12. jaeger-query ClusterIP 172.21.26.187 <none> 16686/TCP 2m
      13. kiali ClusterIP 172.21.155.201 <none> 20001/TCP 2m
      14. prometheus ClusterIP 172.21.63.159 <none> 9090/TCP 2m
      15. tracing ClusterIP 172.21.2.245 <none> 80/TCP 2m
      16. zipkin ClusterIP 172.21.182.245 <none> 9411/TCP 2m

      如果集群运行在一个不支持外部负载均衡器的环境中(例如:minikube),istio-ingressgatewayEXTERNAL-IP 将显示为 <pending> 状态。请使用服务的 NodePort 或 端口转发来访问网关。

      请确保关联的 Kubernetes pod 已经部署,并且 STATUSRunning

      1. NAME READY STATUS RESTARTS AGE
      2. grafana-f8467cc6-rbjlg 1/1 Running 0 1m
      3. istio-citadel-78df5b548f-g5cpw 1/1 Running 0 1m
      4. istio-egressgateway-78569df5c4-zwtb5 1/1 Running 0 1m
      5. istio-galley-74d5f764fc-q7nrk 1/1 Running 0 1m
      6. istio-pilot-f479bbf5c-qwr28 1/1 Running 0 1m
      7. istio-policy-6fccc5c868-xhblv 1/1 Running 2 1m
      8. istio-sidecar-injector-78499d85b8-x44m6 1/1 Running 0 1m
      9. istio-telemetry-78b96c6cb6-ldm9q 1/1 Running 2 1m
      10. istio-tracing-69b5f778b7-s2zvw 1/1 Running 0 1m
      11. kiali-99f7467dc-6rvwp 1/1 Running 0 1m
      12. prometheus-67cdb66cbb-9w2hm 1/1 Running 0 1m

    后续步骤

    安装 Istio 后,就可以部署您自己的服务,或部署安装程序中系统的任意一个示例应用。

    应用程序必须使用 HTTP/1.1 或 HTTP/2.0 协议用于 HTTP 通信;HTTP/1.0 不支持。

    当使用 kubectl apply 来部署应用时,如果 pod 启动在标有 istio-injection=enabled 的命名空间中,那么,Istio sidecar 注入器将自动注入 Envoy 容器到应用的 pod 中:

    在没有 istio-injection 标记的命名空间中,在部署前可以使用 命令将 Envoy 容器手动注入到应用的 pod 中:

    1. $ istioctl kube-inject -f <your-app-spec>.yaml | kubectl apply -f -

    如果您不确定要从哪开始,可以先部署 Bookinfo 示例,它会让您体验到 Istio 的流量路由、故障注入、速率限制等功能。 然后您可以根据您的兴趣浏览各种各样的 。

    下列任务都是初学者开始学习的好入口:

    下一步,可以定制 Istio 并部署您自己的应用。在您开始自定义 Istio 来适配您的平台或者其他用途之前,请查看以下资源:

    使用 Istio 过程中有任何问题,请来信告知我们,并欢迎您加入我们的社区

      相关内容

      Helm 变更

      关于 Istio 1.1 和 Istio 1.2 之间的 Helm chart 安装选项的变更。

      本文详细介绍了 Istio 1.2 系列到 Istio 1.3 系列之间的安装参数变化详情。

      Helm 安装参数变动表

      本文详细介绍了 Istio 1.0 系列到 Istio 1.1 系列之间的安装参数变化详情。

      在 Istio 中配置和管理 DNS 证书。

      Istio Operator 简介

      关于 Istio 基于 operator 的安装和控制平面管理特性的介绍。

      一种更安全管理 Istio webhook 的方法。