跳转至

第八节 使用Kiali

Kiali以(https://www.kiali.com)也是一个用于Istio可视化的软件,同前面的Grafana, Promtheus 等通用软件不同Kiali目前是专用于Istio系统的, 可视化及跟踪等通用功能, 还专门提供了Istio的配置验证,健康评估的等高级功能

1、 启用Kiali

在启用Kiali时同样需要对values.yaml进行修改在默认情况下将Kiali的相关变量设置如下;

istio/charts/kiali/values.yaml

#
# addon kiali
#
enabled: false # Note that if using the demo or demo-auth yaml when installing via Helm, this default will be `true`.
replicaCount: 1
hub: docker.io/kiali
tag: v0.16
contextPath: /kiali # The root context path to access the Kiali UI.
nodeSelector: {}

podAntiAffinityLabelSelector: []
podAntiAffinityTermLabelSelector: []

ingress:
  enabled: false
  ## Used to create an Ingress record.
  hosts:
    - kiali.local
  annotations:
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  tls:
    # Secrets must be manually created in the namespace.
    # - secretName: kiali-tls
    #   hosts:
    #     - kiali.local

dashboard:
  secretName: kiali # You must create a secret with this name - one is not provided out-of-box.
  grafanaURL:  # If you have Grafana installed and it is accessible to client browsers, then set this to its external URL. Kiali will redirect users to this URL when Grafana metrics are to be shown.
  jaegerURL:  # If you have Jaeger installed and it is accessible to client browsers, then set this property to its external URL. Kiali will redirect users to this URL when Jaeger tracing is to be shown.
prometheusAddr: http://prometheus:9090

# When true, a secret will be created with a default username and password. Useful for demos.
createDemoSecret: false

要简单启用Kiali, 则只设置其enabledtrue即可, 但有些地方需要特别注意,如下所述。

  • Jaeger一样,可以为Kiali设置Ingress出口

和其他组件一样, 在设置enabled为true之后使用helm template渲染,kubectl apply命令进行安装 ,等待 Pod启动成功即可。

我们在这里修改kiali的image到最新的版本 image: "docker.io/kiali/kiali:v0.16" => image: "docker.io/kiali/kiali:v1.4.0" $ kubectl apply -f istio-demo.yaml

2、访问Kiali

通过端口转发的方式来访问

$ kubectl -n istio-system get pod -l app=kiali  -o custom-columns='Name:metadata.name'
Name
kiali-785fc9f67b-gc42t

$ kubectl -n istio-system port-forward kiali-785fc9f67b-gc42t 20001:20001

使用浏览器打开页面, 登录页面的默认用户名和密码为values.yamltracing一节修改。 在登录成功之后进人首页,admin:admin,也可以在首页展示了目前的命名空间个和其中的工作负载的情况

http://127.0.0.1:20001/kiali/console

Alt Image Text

单击其中的default命名空问会看到各个服务的情况,包括健康状况、是否注入

Alt Image Text

单击具体的服务,可以看到服务相关的一些指标展示,例如查看flaskapp-v1的出站请求

注意,这些图形是根据访问得出的,如果为空,则可能是因为在指定的时间范围内没有流量浩成的。

尝试选择合适的时间跨度,看看是否正确显示。

可以进人sleep Pod使用之前的方法来生成负载

$ kubectl exec -it sleep-6c9c898f6c-gvqng -c sleep bash

bash-4.4# for i in 'seq 1000';do http --body http://flaskapp/env/version; done

Workloads -> sleep -> Outbound Metrics

Alt Image Text

Graph菜单中会显示服务的拓扑关系例如我们在前而进行测试时使用的, 几个服务都会有如图所示的显示效果

Alt Image Text

Alt Image Text

Alt Image Text

这里可以清楚地看到各个服务的调用关系和流量状况。例如,我们在前面使用 sleep podShell中,使用HTTP客户端一工具通过flaskapp应用调用httpbin的过程, 在这张图中的表现就很明显。

另外,最重要的一个功能就是Kiali菜单左侧的Istio Config项。单击这一项, 选择istio-system命名空间,会看到Istio默认的各种自定义资源的设置情况

Alt Image Text

单击其中的各个项目, 会展示该对象的定义文本,其中还提供了一些配置校验方面的功能。如所示的是istio-policydestinationrules

Alt Image Text

Alt Image Text

开放Kiali服务

values.yaml中也为Kiali提供了Ingress的配置项目,因此开放Kiali服务的 方式和Jaeger一样,可以通过修改服务类型或设置Ingress将服务开放。

3、小结

本章讲解了如何在网格中进行应用部署,还逐个展示了Istio常用可视化组件的启动和使用方法,这些组件对Istio服务网格的运维有很重要的意义,是服务网格可观察性的具体表现。Grafana , PrometheusJaeger这些第三方组件都相对成熟和稳定;Kiali目前还相对幼稚,但是也看得出来Istio对其功能的借重和期待。