入门
本指南帮您快速评估 Istio。如果您已经熟悉 Istio, 或对安装其他配置类型或高级部署模型5感兴趣, 请参阅我们应该采用哪种 Istio 安装方法? 的 FAQ 页面。
您需要一个 Kubernetes 集群才能继续。如果您没有集群, 则可以使用 kind6 或任何其他受支持的 Kubernetes 平台7。
请按照以下步骤开始使用 Istio:
下载 Istio
转到 Istio 发布8页面,下载适用于您操作系统的安装文件, 或自动下载并获取最新版本9(Linux 或 macOS):
转到 Istio 包目录。例如,如果包是
istio-1.26.2
:安装目录包含:
samples/
目录下的示例应用bin/
目录下的istioctl
10 客户端可执行文件。
将
istioctl
客户端添加到路径(Linux 或 macOS):
安装 Istio
在本指南中,我们使用 demo
配置文件11。
选择它是为了拥有一组适合测试的默认设置,但还有其他配置文件可用于生产、
性能测试或 OpenShift12。
与 Istio Gateway 不同,
创建 Kubernetes Gateway13 时,
默认情况下还会部署网关代理服务器。
由于不会使用它们,因此我们禁用通常作为 demo
配置文件的一部分安装的默认 Istio Gateway 服务的部署。
使用
demo
配置文件安装 Istio,无需任何 Gateway:给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy Sidecar 代理:
安装 Kubernetes Gateway API CRD
Kubernetes Gateway API CRD 在大多数 Kubernetes 集群上不会默认安装, 因此请确保在使用 Gateway API 之前已安装它们。
如果 Gateway API CRD 尚不存在,请安装它们:
部署示例应用
您已将 Istio 配置为将 Sidecar 容器注入到您在 default
命名空间中部署的任何应用程序中。
部署
Bookinfo
示例应用15:应用很快会启动起来。当每个 Pod 准备就绪时,Istio Sidecar 将伴随应用一起部署。
和
请注意,Pod 显示
READY 2/2
,确认它们具有应用程序容器和 Istio Sidecar 容器。通过检查响应中的页面标题来验证应用程序是否在集群内运行:
对外开放应用
Bookinfo 应用程序已部署,但无法从外部访问。为了使其可访问, 您需要创建一个 Ingress Gateway,它将路径映射到网格边缘的路由。
为 Bookinfo 应用创建 Kubernetes Gateway13:
默认情况下,Istio 会为网关创建一个
LoadBalancer
服务。 由于我们将通过隧道访问此网关,因此不需要负载均衡器。 如果您想了解如何为外部 IP 地址配置负载均衡器, 请阅读 Ingress Gateway18 文档。通过注解网关将服务类型更改为
ClusterIP
:要检查网关的状态,请运行:
访问应用程序
您将通过刚刚配置的网关连接到 Bookinfo productpage
服务。
要访问网关,您需要使用 kubectl port-forward
命令:
打开浏览器并导航到 http://localhost:8080/productpage
以查看 Bookinfo 应用程序。
如果您刷新页面,您应该会看到书评和评分发生变化,
因为请求分布在 reviews
服务的不同版本上。
查看仪表板
Istio 和几个遥测应用19做了集成。 遥测能帮您了解服务网格的结构、展示网络的拓扑结构、分析网格的健康状态。
使用下面说明部署 Kiali20 仪表板、 以及 Prometheus21、 Grafana22、 还有 Jaeger23。
安装 Kiali 和其他插件24,等待部署完成。
访问 Kiali 仪表板。
在左侧的导航菜单,选择 Graph, 然后在 Namespace 下拉列表中,选择 default。
Kiali 仪表板展示了网格的概览以及
Bookinfo
示例应用的各个服务之间的关系。 它还提供过滤器来可视化流量的流动。Kiali 仪表板
后续步骤
恭喜您完成了评估安装!
对于新手来说,以下这些任务是非常好的学习资源,
可以借助 demo
安装更深入评估 Istio 的特性:
在您为生产系统定制 Istio 之前,请先参阅这些学习资源:
加入 Istio 社区
我们欢迎您加入 Istio 社区35, 提出问题,并给我们以反馈。
卸载
要删除 Bookinfo
示例应用和配置,请参阅清理 Bookinfo
。
Istio 卸载程序按照层次结构逐级地从 istio-system
命令空间中删除 RBAC 权限和所有资源。对于不存在的资源报错,
可以安全地忽略掉,毕竟它们已经被分层地删除了。
命名空间 istio-system
默认情况下并不会被移除。
不需要的时候,使用下面命令移除它:
指示 Istio 自动注入 Envoy Sidecar 代理的标签默认也不移除。 不需要的时候,使用下面命令移除它。
如果您安装了 Kubernetes Gateway API CRD 并且现在想要删除它们,请运行以下命令之一:
如果您运行的任何任务需要实验版本的 CRD:
否则: