开始

本指南面向 Istio 的新用户,让您通过安装 demo 配置文件快速评估 Istio。

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

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

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

  1. 搭建平台
  2. 下载 Istio
  3. 安装 Istio

搭建平台

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

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

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

下载 Istio

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

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

    1. $ curl -L https://istio.io/downloadIstio | sh -
  2. 切换到 Istio 包所在目录下。例如:Istio 包名为 istio-1.6.0,则:

    1. $ cd istio-1.6.0

    安装目录包含如下内容:

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

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

安装 Istio

请按照以下步骤在您所选的平台上使用 demo 配置文件安装 Istio。

  1. 安装 demo 配置

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

    1. $ kubectl get svc -n istio-system
    2. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    3. grafana ClusterIP 172.21.211.123 <none> 3000/TCP 2m
    4. istio-citadel ClusterIP 172.21.177.222 <none> 8060/TCP,15014/TCP 2m
    5. istio-egressgateway ClusterIP 172.21.113.24 <none> 80/TCP,443/TCP,15443/TCP 2m
    6. istio-galley ClusterIP 172.21.132.247 <none> 443/TCP,15014/TCP,9901/TCP 2m
    7. 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
    8. istio-pilot ClusterIP 172.21.105.205 <none> 15010/TCP,15011/TCP,8080/TCP,15014/TCP 2m
    9. istio-policy ClusterIP 172.21.14.236 <none> 9091/TCP,15004/TCP,15014/TCP 2m
    10. istio-sidecar-injector ClusterIP 172.21.155.47 <none> 443/TCP,15014/TCP 2m
    11. istio-telemetry ClusterIP 172.21.196.79 <none> 9091/TCP,15004/TCP,15014/TCP,42422/TCP 2m
    12. jaeger-agent ClusterIP None <none> 5775/UDP,6831/UDP,6832/UDP 2m
    13. jaeger-collector ClusterIP 172.21.135.51 <none> 14267/TCP,14268/TCP 2m
    14. jaeger-query ClusterIP 172.21.26.187 <none> 16686/TCP 2m
    15. kiali ClusterIP 172.21.155.201 <none> 20001/TCP 2m
    16. prometheus ClusterIP 172.21.63.159 <none> 9090/TCP 2m
    17. tracing ClusterIP 172.21.2.245 <none> 80/TCP 2m
    18. zipkin ClusterIP 172.21.182.245 <none> 9411/TCP 2m

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

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

    1. $ kubectl get pods -n istio-system
    2. NAME READY STATUS RESTARTS AGE
    3. grafana-f8467cc6-rbjlg 1/1 Running 0 1m
    4. istio-citadel-78df5b548f-g5cpw 1/1 Running 0 1m
    5. istio-egressgateway-78569df5c4-zwtb5 1/1 Running 0 1m
    6. istio-galley-74d5f764fc-q7nrk 1/1 Running 0 1m
    7. istio-ingressgateway-7ddcfd665c-dmtqz 1/1 Running 0 1m
    8. istio-pilot-f479bbf5c-qwr28 1/1 Running 0 1m
    9. istio-policy-6fccc5c868-xhblv 1/1 Running 2 1m
    10. istio-sidecar-injector-78499d85b8-x44m6 1/1 Running 0 1m
    11. istio-telemetry-78b96c6cb6-ldm9q 1/1 Running 2 1m
    12. istio-tracing-69b5f778b7-s2zvw 1/1 Running 0 1m
    13. kiali-99f7467dc-6rvwp 1/1 Running 0 1m
    14. 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 中:

  1. $ kubectl label namespace <namespace> istio-injection=enabled
  2. $ kubectl create -n <namespace> -f <your-app-spec>.yaml

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

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

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

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

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

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

卸载

卸载程序将删除 RBAC 权限、istio-system 命名空间和所有相关资源。可以忽略那些不存在的资源的报错,因为它们可能已经被删除掉了。

  1. $ istioctl manifest generate --set profile=demo | kubectl delete -f -

相关内容

Helm 变更

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

Helm 安装参数变动表

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

Helm 安装参数变动表

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

DNS 证书管理

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

Istio Operator 简介

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

安全管理 Webhook

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