Istio安装
下载
官网:Istio / 入门
上面的命令下载最新版本(用数值表示)的 Istio。 您可以给命令行传递变量,用来下载指定的、不同处理器体系的版本。 例如,要为 x86_64 架构下载 Istio 1.20.1,请运行:
转到 Istio 包目录。例如,如果包是 istio-1.20.1
:
安装目录包含:
samples/
目录下的示例应用程序bin/
目录下的istioctl
客户端二进制文件。
- 将
istioctl
客户端添加到路径(Linux 或 macOS):
安装
k3s
对于本次安装,我们采用 demo
配置组合。 选择它是因为它包含了一组专为测试准备的功能集合,另外还有用于生产或性能测试的配置组合。
如果您的平台有供应商提供的配置组合,比如 Openshift,则在下面命令中替换掉 demo
配置项。更多细节请参阅平台说明。
(最好需要32g以上内存。我本地设置了32g内存还是不行,40g可以了)
$ istioctl install --set profile=demo -y
✔ Istio core installed
✔ Istiod installed
✔ Egress gateways installed
✔ Ingress gateways installed
✔ Installation complete
给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy 边车代理:
如果安装失败用命令清除环境
给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy 边车代理:
部署示例应用
部署
Bookinfo
示例应用:应用很快会启动起来。当每个 Pod 准备就绪时,Istio 边车将伴随应用一起部署。
和
在执行下一步之前,重新运行上面的命令直到所有的 Pod 达到此状态:就绪状态(READY)的值为 2/2
、状态(STATUS)的值为 Running
。 基于您平台的不同,这个操作过程可能会花费几分钟的时间。
确认上面的操作都正确之后,运行下面命令,通过检查返回的页面标题来验证应用是否已在集群中运行,并已提供网页服务:
一定要成功了在运行下一步!出现下图情况,可以看看从节点是不是有问题
对外开放应用程序
此时,BookInfo 应用已经部署,但还不能被外界访问。 要开放访问,您需要创建 Istio 入站网关(Ingress Gateway), 它会在网格边缘把一个路径映射到路由。
把应用关联到 Istio 网关:
确保配置文件没有问题:
有问题可以删几个自己的service和deploy?
确定入站IP和端口
按照说明,为访问网关设置两个变量:INGRESS_HOST
和 INGRESS_PORT
。 使用标签页,切换到您选用平台的说明:
执行下面命令以判断您的 Kubernetes 集群环境是否支持外部负载均衡:
设置 EXTERNAL-IP
的值之后, 您的环境就有了一个外部的负载均衡器,可以将其用作入站网关。 但如果 EXTERNAL-IP
的值为 <none>
(或者一直是 <pending>
状态), 则您的环境则没有提供可作为入站流量网关的外部负载均衡器。 在这个情况下,您还可以用服务(Service)的节点端口访问网关。
依据您的环境,选择相应的说明:
如果您确定您的环境中确实存在外部的负载均衡,请参照下面的说明。
如果您确定您的环境中确实存在外部的负载均衡,请参照下面的说明。
设置入站 IP 地址和端口:
在某些环境中,负载均衡器可能使用主机名访问,而不是 IP 地址。 在这种情况下,入站流量网关的
EXTERNAL-IP
值不是 IP 地址,而是一个主机名, 那上面设置INGRESS_HOST
环境变量的操作会失败。 使用下面命令纠正INGRESS_HOST
的值。
按照下面说明:如果您的环境中没有外部负载均衡器,那就选择一个节点端口来代替。
设置入站的端口:
GKE:Google Kubernetes Engine
您需要创建防火墙规则,以允许 TCP 流量发送到 ingressgateway
服务地端口。 运行下面的命令,以允许 HTTP 端口或 HTTPS 端口的流量,或两者的流量都允许。
IBM Cloud Kubernetes Service:
Docker For Desktop:
其他环境:
设置环境变量
GATEWAY_URL
:确保 IP 地址和端口均成功地赋值给了环境变量:
验证外部访问
用浏览器查看 Bookinfo 应用的产品页面,验证 Bookinfo 已经实现了外部访问。
- 运行下面命令,获取 Bookinfo 应用的外部访问地址。
echo "http://$GATEWAY_URL/productpage"
- 把上面命令的输出地址复制粘贴到浏览器并访问,确认 Bookinfo 应用的产品页面是否可以打开。
查看仪表板
Istio 和几个遥测应用做了集成。 遥测能帮您了解服务网格的结构、展示网络的拓扑结构、分析网格的健康状态。
使用下面说明部署 Kiali 仪表板、 以及 Prometheus、 Grafana、 还有 Jaeger。
安装 Kiali 和其他插件,等待部署完成。
- 如果在安装插件时出错,再运行一次命令。有一些和时间相关的问题,再次运行就能解决。
访问 Kiali 仪表板。
$ istioctl dashboard kiali
- 在左侧的导航菜单,选择 Graph ,然后在 Namespace 下拉列表中,选择 default 。
要查看追踪数据,必须向服务发送请求。请求的数量取决于 Istio 的采样率。 采样率在安装 Istio 时设置,默认采样速率为 1%。在第一个跟踪可见之前,您需要发送至少 100 个请求。 使用以下命令向 productpage
服务发送 100 个请求:
$ for i in $(seq 1 100); do curl -s -o /dev/null "http://$GATEWAY_URL/productpage"; done
Kiali 仪表板展示了网格的概览以及 Bookinfo
示例应用的各个服务之间的关系。 它还提供过滤器来可视化流量的流动。