简介
我们使用Kiali的用户界面仪表板,应用博客"服务网的快速指南 "中定义的服务网的所有功能。
什么是Kiali?
根据官方文档,Kiali是Istio服务网的管理控制台。我们将Kiali作为Istio的一个插件来安装,或者作为你生产环境的一部分来使用。
Kiali的各种服务包括。
- 监控:可视化集群中通信的服务
- 健康:这可以快速识别问题
- 细节:检查细节、日志和指标
- 配置:查看和编辑istio定制的yaml配置
前提条件
- 足够的资源,即Istio的RAM和内存
注意:为了正常运行,Istio需要4个vCPU和8GB的内存。
在Kiali上工作
在我们转到Kiali之前,你可以通过得到类似的输出来检查你在集群上的配置是否正确。
$ kubectl get all -n istio-system
NAME READY STATUS RESTARTS AGE
pod/istio-ingressgateway-5f86977657-cqv56 1/1 Running 0 70m
pod/istiod-7587989b4f-6s9w5 1/1 Running 0 70m
pod/kiali-575cc8cbf-9qj6b 0/1 ContainerCreating 0 14s
pod/prometheus-6544454f65-nm65s 0/2 ContainerCreating 0 13s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
AGE
service/istio-ingressgateway LoadBalancer 10.96.84.182 10.96.84.182 15021:30723/TCP,80:30373/TCP,443:30929/TCP 70m
service/istiod ClusterIP 10.101.176.29 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 70m
service/kiali ClusterIP 10.98.6.199 <none> 20001/TCP,9090/TCP 15s
service/prometheus ClusterIP 10.111.174.15 <none> 9090/TCP 13s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/istio-ingressgateway 1/1 1 1 70m
deployment.apps/istiod 1/1 1 1 70m
deployment.apps/kiali 0/1 1 0 15s
deployment.apps/prometheus 0/1 1 0 13s
NAME DESIRED CURRENT READY AGE
replicaset.apps/istio-ingressgateway-5f86977657 1 1 1 70m
replicaset.apps/istiod-7587989b4f 1 1 1 70m
replicaset.apps/kiali-575cc8cbf 1 1 0 15s
replicaset.apps/prometheus-6544454f65 1 1 0 13s
NAME REFERENCE TARGETS
MINPODS MAXPODS REPLICAS AGE
horizontalpodautoscaler.autoscaling/istio-ingressgateway Deployment/istio-ingressgateway <unknown>/8
0% 1 5 1 70m
horizontalpodautoscaler.autoscaling/istiod Deployment/istiod <unknown>/8
0% 1 5 1 70m
现在,我们将启动上一篇博客中显示的Kiali仪表板,并在浏览器上运行网址。
$ istioctl dashboard kiali
http://localhost:20001/kiali

Kiali Dashboard
集群流量可视化
- 现在我们看到整个集群的工作图,点击侧面导航窗格上的图形。
- 在名称空间中选择devops
- 在流量中,让默认配置出现在那里
- 选择 "Versioned Graph"。
- 在显示中,选择流量分布,流量率,闲置边缘,闲置节点,服务节点,流量动画。
- 点击图形仪表板中间的 "创建闲置边缘的图形"。你可能会看到类似的输出

Kiali集群图
- 我们需要创建流量,所以我们运行下面的命令,用ingressgateway创建路径,用watch命令多次ping它,创建一个虚拟流量。
$ export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
$ export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
$ export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}')
$ echo "$INGRESS_HOST"
10.96.84.182
$ echo "$INGRESS_PORT"
80
$ echo "$SECURE_INGRESS_PORT"
443
$ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
$ echo "$GATEWAY_URL"
10.96.84.182:80
$ echo "http://$GATEWAY_URL/productpage"
http://10.96.84.182:80/productpage
$ watch exec curl -s -o /dev/null "http://$GATEWAY_URL/productpage"

带流量的集群图
使用Kiali和Istio进行流量转移
流量转移面板允许我们选择流量百分比,将其路由到一个特定的工作负载。
- 由于它只移动到版本1,我们希望它以平等的方式移动到所有版本,为此我们改变了交通规则
- 选择评论,打开信息栏
- 点击评论

- 现在我们看到当前的流量路由
- 点击评论
- 现在我们要删除这个流量路由,点击仪表盘右侧的行动。选择 "删除交通路线"。
- 确认删除虚拟服务和目的地规则


- 使用"行动"中的 "流量转移"创建新的交通路线。
- 它可以通过提供权重来重定向我们想要的流量。我们将在这里使用相等的比例。在预先设置中,你可以改变目的地。例如,我们在网关中使用DNS进行审查,使用istio网关。同样,在流量策略中,你可以配置TLS配置、负载均衡器等。在断路器中,你可以编辑连接设置,如最大连接数或HTTPS最大待处理请求。
- 点击预览

- 现在你可以看到yaml文件创建了新的虚拟服务和目标规则。
- 点击创建
- 这将创建一个新的路由
- 在图形中看到它与集群图形可视化中的方式相同。



新规则后的群集图
注:我们以类似的方式执行下一个Kiali操作,直到删除步骤,然后改变
使用Kiali与Istio的故障注入
故障注入面板允许我们注入故障以测试服务的弹性。
注意
- HTTP延迟:该规范涉及到在请求转发路径中注入延迟。
- HTTP Abort : 这个规范处理的是立即中止请求并返回一个预定义的状态代码。
从Actions中选择Fault Injection,你将能够按照要求应用故障。

故障注入向导
使用Kiali与Istio进行请求路由处理
请求路由向导允许你创建多个路由规则。
- 每个规则由请求匹配部分和路由至部分组成。
- 请求匹配
- 添加多个过滤器 HEADERS、URI、SCHEME、METHOD或AUTHORITY HTTP参数。
- 这可以是空的,在这种情况下,收到的任何HTTP请求都会与此规则匹配。
- 路由部分可以指定被路由到任何工作负载的流量百分比。
与上一个动作类似,按照步骤直到删除,然后选择请求路由。Istio按顺序实现路由规则,因此自上而下的路由是由第一个匹配HTTP请求的规则进行的。
可以使用匹配路由向导来修改规则的顺序。
要进行调整,请打开该向导。

请求路由向导
使用Kiali与Istio的网关、断路器和流量策略
流量路由向导高级部分提供其他配置。而一个可用的高级选项是通过现有的网关将一个服务暴露给外部流量,或者为这个服务创建一个新的网关。

网关配置
现在点击 "电路断路器"。
该向导允许在服务上定义电路断路器,作为可用高级选项的一部分。
- 连接池:用于对上游主机的连接限制。
- 离群检测:根据报告的连续错误实施断路器。

流量断路器
另一个选项是流量策略,这允许定义安全和负载平衡设置。
- TLS部分,包含与上游服务连接的设置。
- 为该服务生成一个 "对等认证 "资源。
- 特定目的地的负载平衡策略。

流量策略
使用Kiali与Istio进行请求超时处理
Istio被请求超时面板用来配置Envoy的请求超时。重复上述步骤直到删除,并从Action中选择Request Timeout。在这个向导中。
- HTTP超时定义了请求超时。
- 当一个HTTP请求失败时,HTTP重试指定了要遵循的重试程序。

请求超时
总结
认证的管理是Kiali不能使用的一项任务。Devops人员使用Istio手动设置。