k8s之VelaQL简单理解
????????kubevela中利用Application對象對底層資源進行了封裝,屏蔽了底層基礎(chǔ)架構(gòu),但是這樣對Application創(chuàng)建的資源狀態(tài)的監(jiān)控,就只能依賴Application的狀態(tài)透出,但狀態(tài)信息簡略、狀態(tài)實時反饋性差,VelaQL就是為了提升Application的可觀測性,用于查詢應(yīng)用級別的資源狀態(tài)。
? ? ? ? 并且velaQL 對標(biāo)的是 PromQL ,,提供了和 PromQL 類似語法的查詢語句,期望能夠成為應(yīng)用監(jiān)控領(lǐng)域的 Prometheus。
并且,vela apiserver內(nèi)置了3種比較通用的查詢視圖:
1、component-pod-view 對應(yīng)用下某個組件創(chuàng)建出的 pod 列表的查詢
2、pod-view 對一個 pod 詳細狀態(tài)的查詢,包括容器狀態(tài)以及 pod 產(chǎn)生的事件
curl --location -g --request GET \ http://127.0.0.1:8000/api/v1/query?velaql=pod-view{name=demo-1-bf6799bb5-dpmk6,namespace=default}3、resource-view 獲取集群中某類資源的列表
curl --location -g --request GET \ 'http://127.0.0.1:8000/api/v1/query?velaql=resource-view{type=ns}'????????每次使用 velaQL 時,系統(tǒng)都會從 vela-system 命名空間下查找和視圖同名的 configMap 提取出 template的CUE模板來進行查詢操作,所以要保證你的自定義視圖存儲在 vela-system 下(默認(rèn))。
4、velaql流程
velaql執(zhí)行流程: // 1、組裝一個workflowstep,用于完成QueryView // 2、通過provider注冊了需要的方法,并提供了TaskLoader用于加載cue模板 // 3、使用TaskLoader加載cue模板,并生成TaskGenerator函數(shù) // 4、執(zhí)行上邊返回的TaskGenerator函數(shù),并生成executor,然后并把handler放到了對應(yīng)的executor,然后是很成了taskRunnertaskRunner主要有run和checkPending兩個函數(shù),并返回taskRunner // 5、執(zhí)行TaskRunner的Run方法,run方法中會將workflowstep的cue模板和參數(shù)生成的cue.value合并成一個新的cue.value作為taskValue,然后調(diào)用doSteps對cue中#component-apply進行處理,對應(yīng)會執(zhí)行具體的provider注冊的某個方法總結(jié)
以上是生活随笔為你收集整理的k8s之VelaQL简单理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 再有人问你为什么MySQL用B+树做索引
- 下一篇: 从戈君离开B站,聊聊技术人如何面对期权不