kubevela中利用Application对象对底层资源进行了封装,屏蔽了底层基础架构,但是这样对Application创建的资源状态的监控,就只能依赖Application的状态透出,但状态信息简略、状态实时反馈性差,VelaQL就是为了提升Application的可观测性,用于查询应用级别的资源状态。
        并且velaQL 对标的是 PromQL ,,提供了和 PromQL 类似语法的查询语句,期望能够成为应用监控领域的 Prometheus。

view{parameter1=value1,parameter2=value2}

并且,vela apiserver内置了3种比较通用的查询视图:
1、component-pod-view 对应用下某个组件创建出的 pod 列表的查询

curl --location -g --request GET \
http://127.0.0.1:8000/api/v1/query?velaql=component-pod-view{appNs=default,appName=demo,name=demo}

2、pod-view 对一个 pod 详细状态的查询,包括容器状态以及 pod 产生的事件

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 时,系统都会从 vela-system 命名空间下查找和视图同名的 configMap 提取出 template的CUE模板来进行查询操作,所以要保证你的自定义视图存储在 vela-system 下(默认)。

4、velaql流程

velaql执行流程:
// 1、组装一个workflowstep,用于完成QueryView
// 2、通过provider注册了需要的方法,并提供了TaskLoader用于加载cue模板
// 3、使用TaskLoader加载cue模板,并生成TaskGenerator函数
// 4、执行上边返回的TaskGenerator函数,并生成executor,然后并把handler放到了对应的executor,然后是很成了taskRunnertaskRunner主要有run和checkPending两个函数,并返回taskRunner
// 5、执行TaskRunner的Run方法,run方法中会将workflowstep的cue模板和参数生成的cue.value合并成一个新的cue.value作为taskValue,然后调用doSteps对cue中#component-apply进行处理,对应会执行具体的provider注册的某个方法

k8s之VelaQL简单理解相关推荐

  1. K8s之ControllerRateLimiter简单理解

    1.RateLimiter实现了对于队列元素的重试规则,包括三个函数When获取某个元素应该等待的时间,Forget释放某个元素不再监测,NumRequeues返回该元素已经失败重试的次数. 2.Ra ...

  2. k8s之kubebuilder简单理解

    kubebuilder流程 1.创建manager,ctrl.NewManager,包括设置 shemme和端口.选主信息等配置.NewCluster(用来访问k8s,主要包括newCache和New ...

  3. k8s之informer简单理解

    informer简介 Informer是一个能够缓存apiserver的对象到本地.具有索引机制.并可以注册 EventHandler 的 client.使用 informer 的目的是为了减轻 ap ...

  4. android 点击事件消费,Android View事件分发和消费源码简单理解

    Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...

  5. 【转载】Deep learning:十九(RBM简单理解)

    Deep learning:十九(RBM简单理解) 这篇博客主要用来简单介绍下RBM网络,因为deep learning中的一个重要网络结构DBN就可以由RBM网络叠加而成,所以对RBM的理解有利于我 ...

  6. 学习:双机热备、集群、负载均衡、SQL故障转移群集简单理解(转)

    双机热备.集群.负载均衡.SQL故障转移群集简单理解平常,大家常提到几个技术名词:双机热备.集群.负载均衡.SQL故障转移群集.这里,就我的理解,和大家简单探讨下,有不足或错误之处还请各位指出! 这些 ...

  7. 字符串匹配算法Java_如何简单理解字符串匹配算法?

    这篇文章来说说如何简单理解KMP,BM算法.之前看过一些文章说,KMP算法很难理解. 可我并不觉得. 我反而觉得它容易理解.平时我们写java代码的时候, 判断一个字符串是否存在包含另一个字符串都是直 ...

  8. python yield的简单理解

    2019独角兽企业重金招聘Python工程师标准>>> yield是个生成器,它可以使一个方法变成可迭代的方法,每次迭代返回yield后面的值 简单理解: >>>d ...

  9. linun——SElinux的简单理解

    SElinux简单理解 一.什么是SElinux? SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Co ...

最新文章

  1. python怎么编程乘法口诀表_用python编写乘法口诀表的方法
  2. 刚安装了Fedora32,尝尝鲜~,哈哈~~~
  3. 学会选择最适合自己的GPS定位系统源码
  4. 1.17 选择排序法
  5. 线程条件控制实现线程的同步
  6. 1088 三人行 (20 分)
  7. 【C语言】编写一个简单的学生成绩管理系统
  8. hdu1054(最小顶点覆盖)
  9. LAMP 3.2 mysql登陆
  10. 对话框:创建对话框模板和修改对话框属性
  11. go-基础知识二-数据类型-变量
  12. Linux的IO机制
  13. 详解Android定位,AndroidGPS定位详解(1)
  14. Infopath入门到精通系列-2 Infopath 文件内容查看
  15. 黑客教父郭盛华:11个IDA Pro反汇编程序的替代品
  16. 兜兜转转解决office和visio不能同时安装的问题
  17. 无效的m3u8怎么办_vue使用video.js解决m3u8视频播放格式
  18. react-navigation 6.x 学习(3)
  19. allegro差分信号走线_Cadence差分线走线规则
  20. Elasticsearch(ES) 基本知识

热门文章

  1. Unity重置Animator到初始状态和重复播放同一个Animation
  2. 亲和属性和链路管理组的TE隧道路径控制原理
  3. Sublime text3 Emmet使用
  4. 最常用最好记Linux命令
  5. 学院菌喊你来领取年终学习奖状啦~~!!!
  6. 工业触屏系统开发经验分享
  7. mahout基于Hadoop的CF代码分析(转)
  8. 光有面罩不是能防护的
  9. ielts speaking questions
  10. 大数相乘(大数阶乘模板)