我一直在研究k8s的API聚合层和扩展API服务器,据我理解,扩展k8s API服务器的API和CRD是一回事,只是后端实现不同,CRD是提供一个schema来存储一个新的对象(资源),并将添加的资源的CRUD添加到API服务器。但是,在API聚合的情况下,我将其理解为扩展K8 S API服务器的API,将K8 S API服务器作为一种代理进行操作,并让实际的业务逻辑由自定义扩展API服务器处理。
metrics server是一个很好的例子,我经常使用它。但是,当我通过这个metrics server查询pod metrics时,我可以通过一种名为Podernet的资源来检查pod的metrics。在k8s文档中,有一个通过curl
或kubectl get -raw
检查的例子,但也可以通过kubectl get podmetrics
进行检查。我还在Github上检查了metrics服务器的k8s yaml清单,但在任何地方都找不到定义Poddom资源的文件。这个Poddom资源是从哪里来的?
1条答案
按热度按时间mlnl4t2r1#
x1e API的类型定义在x1e 0f1x中定义。在
kubernetes/metrics
中,PodMetrics
结构体在/pkg/apis/metrics/types.go
中定义。字符串
任何Go语言的API API实现,如
metrics-server
,都需要k8s.io/metrics
。至于
PodMetrics
类型是如何添加到Kubernetes API中的,有一个Install
函数可以注册API组和资源类型。如果你遵循这个函数,你会发现PodMetrics
被添加到了scheme中。型