一、概述 简介 kiali 是一款 istio 服务网格可视化工具,提供了服务拓补图、全链路跟踪、指标遥测、配置校验、健康检查等功能。 ~]# kubectl get pods -n istio-system|grep kiali kiali-667b888c56-4zprl 1/1 Running ": "NodePort"}}' 再次查看svc [root@k8s-master ~]# kubectl get svc -n istio-system|grep kiali kiali Application(应用维度) applications 指运行中的应用,kiali 独有概念。 ? 特别注意 kiali 只能识别设置了 app 标签的应用。 四、kiali 架构 ? 由架构图可知,kiali 架构还是比较简单的,属于单体应用。
本文将介绍如何在Kubernetes集群中安装和使用Kiali。 安装Istio 在安装Kiali之前,我们需要先安装Istio,因为Kiali是Istio的一部分。 安装Istio后,我们可以按照以下步骤在Kubernetes集群中安装Kiali: 下载并解压缩Kiali: curl -L https://github.com/kiali/kiali/releases /kubernetes/kiali.yaml 等待Kiali安装完成后,确认Kiali Pod已经正确运行: kubectl get pods -n istio-system | grep kiali 访问Kiali 安装Kiali后,我们可以通过Web界面访问Kiali。 可以按照以下步骤访问Kiali: 获取Kiali的URL: export KIALI_URL=$(kubectl -n istio-system get service kiali -o jsonpath
| grep -i kiali | awk '{print $1}') kiali pod 内只有一个容器,名称为 kiali。 该容器在启动的过程中会运行容器内 kiali 进程,该进程会加载 /kiali-configuration/config.yaml 配置文件,该 config.yaml 文件定义了 kiali 进程运行时行为 pod 部分详情如下: spec: containers: - command: - /opt/kiali/kiali - -config - /kiali-configuration [kiali@kiali-667b888c56-8h7cp kiali]$ ls /kiali-configuration/ config.yaml [kiali@kiali-667b888c56-8h7cp kiali]$ config.yaml 文件 config.yaml 内容如下: [kiali@kiali-667b888c56-8h7cp kiali]$ cat /kiali-configuration
三、kiali 关联 jaeger kiali 是可视化服务网格组件,截图如下: ? 点击上面箭头 Distributed Tracing 链接可以打开 jaeger。 设置 kiali jaeger 外部链接地址 编辑 kiali configmap: kubectl edit configmap -n istio-system kiali 在 external_services.tracing.url -n istio-system | grep -i kiali | awk '{print $1}') 执行完后,再次查看 kiali pod [root@k8s-master k8s]# kubectl get pods -n istio-system|grep kiali kiali-667b888c56-nt27g 1/1 Running 0 四、kiali jaeger 流量关联 以上的操作中通过 kiali 可以打开 jaeger 了,还可以通过实际流量将 kiali 和 jaeger 关联起来,首先打入一些流量,这里采用的是 istio
一、概述 kiali 是使用 istioctl 客户端工具安装 demo profile 时自动就会安装的组件,kiali 是一款 istio 服务网格可视化工具,提供了服务拓扑图、全链路跟踪、指标遥测 二、kiali 可视化bookinfo 在前面几篇文章中,已经部署了kiali和bookinfo。 登录 kiali,进入 overview 菜单,选中 bookinfo 应用,如下图所示 ?
一、节点调度 在开始 kiali 亲和性调度之前,先演示一个简单的例子介绍 pod 选择调度到指定 node: 节点打标 使用命令查看当前所有 k8s 节点: [root@k8s-master ~]# hv498 1/1 Running 0 7m30s 10.244.1.30 k8s-node01 <none> <none> 二、kiali kiali 节点亲和性调度 举例1 apiVersion: apps/v1 kind: Deployment metadata: name: redis-cache spec: selector
能搜到这篇文章的都是知道kiali是干啥的,所以我就不过多介绍了。想了解自己去百度吧。我懒得打字。 kiali-ui仓库地址 正常开发这个项目需要某系统,至于那个系统我也不知道,因为windows,ubuntu系统我都试了,都不好使,只有苹果电脑还没测试过,可能他们的开发人员都是用苹果,也是,搞云原生的都是有钱人 可以看下package.json中的启动的脚本 "scripts": { "build": "if [ \"${KIALI_ENV}\" = \"production\" ]; then npm 具体步骤 git clone https://github.com/kiali/kiali-ui.git cd kiali-ui yarn yarn start # open http://localhost ://kiali-istio-system.127.0.0.1.nip.io 是部署的kiali应用服务地址 我使用的是tag v1.22.1的代码 打开页面是会显示如此,报这个错误是因为环境变量没有设置成功
下面我们将使用官方的模板部署 Kiali 、 还有 Jaeger,然后通过 Kiali 统一查看集群的指标信息。 接下来,创建一个 VirtualService 资源,将 Gateway 路由到 Kiali 服务. kiali_vs.yaml apiVersion: networking.istio.io : - kiali-gateway http: - match: - uri: prefix: /kiali route: Kiali 从这些遥测数据中获取服务拓扑信息,以创建服务之间的依赖关系图。 Kiali 将这两个数据源的信息整合在一起,生成 Graph,它展示了服务网格的拓扑结构、服务之间的流量以及其他性能指标。 你可以在 Kiali 的 Workloads 查看每个负载的 Pod 信息,正常情况应当如下所示: 修复 Kiali Grafana 问题 点击右上角的消息,可能会提示配置不正确,因为 kiali 需要从
created serviceaccount/kiali created configmap/kiali created clusterrole.rbac.authorization.k8s.io/kiali-viewer /kiali created service/kiali created deployment.apps/kiali created serviceaccount/prometheus created "monitoring.kiali.io/v1alpha1" unable to recognize "/usr/local/istio-1.8.1/samples/addons/kiali.yaml "monitoring.kiali.io/v1alpha1" unable to recognize "/usr/local/istio-1.8.1/samples/addons/kiali.yaml "monitoring.kiali.io/v1alpha1" unable to recognize "/usr/local/istio-1.8.1/samples/addons/kiali.yaml
KIALI_USERNAME=$(read -p 'Kiali Username: ' uval && echo -n $uval | base64) 当提示出现时输入 Kiali 用户名: KIALI_PASSPHRASE =$(read -sp 'Kiali Passphrase: ' pval && echo -n $pval | base64) 当提示出现时输入 Kiali 密码: 运行以下命令创建 secret: namespace: $NAMESPACE labels: app: kiali type: Opaque data: username: $KIALI_USERNAME passphrase : $KIALI_PASSPHRASE EOF 修改 kiali 的 svc 模式由 ClusterIP 为 NodePort kubectl edit svc kiali -n istio-system 查看 kiali 的端口 kubectl get svc -n istio-system 通过浏览器进行访问 http://IP:PORT
1、创建登录凭证 # KIALI_USERNAME=$(read -p 'Kiali Username: ' uval && echo -n $uval | base64); Kiali Username : 用户名 # KIALI_PASSPHRASE=$(read -sp 'Kiali Passphrase: ' pval && echo -n $pval | base64); Kiali Passphrase : istio-system labels: app: kiali type: Opaque data: username: $KIALI_USERNAME passphrase: $KIALI_PASSPHRASE EOF 2、使用Istioctl安装 # istioctl manifest apply --set values.kiali.enabled=true [...] # kubectl -n istio-system edit svc kiali [...] spec: ports: - name: http-kiali [...]
在生产环境中,直接登录服务器是非常不方便的,我们可以使用Kiali配置Istio的流量管理。 本文以Istio官方提供的Bookinfo应用示例为例,使用Kiali配置Istio的流量管理。
# 安装kiali cd /root/istio-1.13.2/samples/addons kubectl apply -f kiali.yaml # ingress配置 kubectl create apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: kiali namespace: istio-system annotations: kubernetes.io/ingress.class: "nginx" spec: tls: - hosts: - kiali.test.com secretName: test-secret rules: - host: kiali.test.com http: paths: port: name: http kubectl apply -f kiali-ingress-https.yaml -n
created configmap/kiali created clusterrole.rbac.authorization.k8s.io/kiali-viewer created clusterrole.rbac.authorization.k8s.io /kiali created clusterrolebinding.rbac.authorization.k8s.io/kiali created role.rbac.authorization.k8s.io /kiali-controlplane created rolebinding.rbac.authorization.k8s.io/kiali-controlplane created service/ kiali created deployment.apps/kiali created serviceaccount/prometheus created configmap/prometheus created dashboard. istioctl dashboard kiali 官方文档默认使用:istioctl dashboard kiali,在浏览器中打不开,经过排查端口是通的,kiali打不开。
created configmap/kiali created clusterrole.rbac.authorization.k8s.io/kiali-viewer created clusterrole.rbac.authorization.k8s.io /kiali created clusterrolebinding.rbac.authorization.k8s.io/kiali created role.rbac.authorization.k8s.io /kiali-controlplane created rolebinding.rbac.authorization.k8s.io/kiali-controlplane created service/ kiali created deployment.apps/kiali created serviceaccount/prometheus created configmap/prometheus created ... deployment "kiali" successfully rolled out 启动 % istioctl dashboard kiali http://localhost:20001
本任务并没有涵盖Kiali的所有特性,更多参见Kiali website。 本节将使用Boofinfo应用。 部署 Kiali依赖Prometheus,因此首先要部署Prometheus。 注:由于Kiali依赖Prometheus,因此需要将Kiali和Prometheus关联起来。 关于Kiali Developer API 为了生成表示图表和其他指标,健康,以及配置信息的JSON文件,可以参考Kiali Developer API。 请注意,Kiali Developer API可能在不同版本间发送变更,且不保证向后兼容。 其他特性 Kiali还有其他丰富的特性,如与Jaeger跟踪的集成。 更多细节和特性,参见Kiali官方文档。
配置修改 这里要修改一下 kiali 的 ip 方式 [root@VM_74_51_centos /data]# kubectl edit svc kiali -n istio-system spec $ KIALI_USERNAME=$(read -p 'Kiali Username: ' uval && echo -n $uval | base64) $ KIALI_PASSPHRASE=$(read v1 kind: Secret metadata: name: kiali namespace: $NAMESPACE labels: app: kiali type: Opaque data: username: $KIALI_USERNAME passphrase: $KIALI_PASSPHRASE EOF 查看 kiali 页面: http://x.x.x.x:31952 在 kiali 中的可以看到调用关系: ?
部署流量观测工具 kiali 6.1 deploy kiali 部署 $ kubectl apply -f samples/addons serviceaccount/grafana created configmap created serviceaccount/kiali created configmap/kiali created clusterrole.rbac.authorization.k8s.io/kiali-viewer /kiali created service/kiali created deployment.apps/kiali created serviceaccount/prometheus created -n istio-system deployment "kiali" successfully rolled out 6.2 查看 kiali,了解流量访问情况 本地访问 kiali $ istioctl dashboard kiali http://localhost:20001/kiali 网络拓扑图 [网络拓扑图] 单个应用的流量指标 [inbound metrics] [Traffic] [Overview
对Kiali来说Istio是必须存在的系统,它类似于Kiali的宿主。虽然它们可以分开部署,但没有了Istio,Kiali是不能工作的 ? 安装和启动Kiali 在安装前,需要先在Kubernetes系统中添加一个Secret对象来作为Kiali的认证凭证。 使用helm template进行安装,并添加--set kiali.enabled=true选项 ? 验证一下Kiali的服务是否已经启动 ? 使用Kiali观测服务网格 Kiali启动后,在浏览器中多次访问Bookinfo应用,生成一些测试数据。 Kiali还提供了对配置项正确性进行校验的功能,如果配置有问题,Kiali会用红色的叉来提示 ?
created configmap/kiali created clusterrole.rbac.authorization.k8s.io/kiali-viewer created clusterrole.rbac.authorization.k8s.io /kiali created clusterrolebinding.rbac.authorization.k8s.io/kiali created role.rbac.authorization.k8s.io /kiali-controlplane created rolebinding.rbac.authorization.k8s.io/kiali-controlplane created service/ kiali created deployment.apps/kiali created serviceaccount/prometheus created configmap/prometheus created ://localhost:20001/kiali 访问 Kiali 仪表板 浏览器访问 http://172.18.0.2:31309/productpage 产生流量: 隔了一段时间,没有流量,节点空闲