Kiali與Istio的通信

Kiali 與 Istio

Kiali是Istio的可視化插件,在Istio中使用Demo進行初始化會自動運行Kiali。

或者執行:

$ istioctl dashboard kiali

(開啓Kiali 的完整過程)

GIthub倉庫位置

使用方式和示例不做介紹,這裏重點關注Kiali如何更新istio的配置問題

Kiali 與 Istio的通信問題

爲了搞懂通信問題,我重點關注business包下的代碼。
在這裏插入圖片描述
代碼中的方法中,有一部分是對ServiceConfig進行增刪改查的方法
在這裏插入圖片描述
我隨機選取了一個方法進行跟蹤,發現最終對Istio的配置處理時交給了K8s的客戶端進行的。
在這裏插入圖片描述
在配置管理的相關方法中,主要調用的時IstioClientInterface接口,而該接口kuberneters的client包下,因此可以猜測Kiali通過k8s對istio的配置管理。

Kiali的數據獲取

拋出配置後,其他的信息由Istio管理,如節點健康等。
首先看一下一個獲取service健康信息的代碼

func (in *HealthService) getServiceRequestsHealth(namespace, service, rateInterval string, queryTime time.Time) (models.RequestHealth, error) {
	rqHealth := models.NewEmptyRequestHealth()
	inbound, err := in.prom.GetServiceRequestRates(namespace, service, rateInterval, queryTime)
	for _, sample := range inbound {
		rqHealth.AggregateInbound(sample)
	}
	return rqHealth, err
}

在這裏可以看到數據來源於in.prom.GetServiceRequestRates()這個方法,這個方法被聲明在了歐羅米修斯的client中,而大部分的數據也來自於此,因此猜測,數據的來源很有可能是普羅米修斯。
而且在istio的官方聲明中也的確說過Istio的數據依託於普羅米修斯。

至於具體的業務邏輯 有待研究。

發佈了37 篇原創文章 · 獲贊 10 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章