kubernetes “Pods”的定义在哪里?

zy1mlcev  于 2024-01-07  发布在  Kubernetes
关注(0)|答案(1)|浏览(253)

我一直在研究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文档中,有一个通过curlkubectl get -raw检查的例子,但也可以通过kubectl get podmetrics进行检查。我还在Github上检查了metrics服务器的k8s yaml清单,但在任何地方都找不到定义Poddom资源的文件。这个Poddom资源是从哪里来的?

mlnl4t2r

mlnl4t2r1#

x1e API的类型定义在x1e 0f1x中定义。在kubernetes/metrics中,PodMetrics结构体在/pkg/apis/metrics/types.go中定义。

  1. type PodMetrics struct {
  2. metav1.TypeMeta
  3. // Standard object's metadata.
  4. // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
  5. // +optional
  6. metav1.ObjectMeta
  7. // The following fields define time interval from which metrics were
  8. // collected from the interval [Timestamp-Window, Timestamp].
  9. Timestamp metav1.Time
  10. Window metav1.Duration
  11. // Metrics for all containers are collected within the same time window.
  12. Containers []ContainerMetrics
  13. }

字符串
任何Go语言的API API实现,如metrics-server,都需要k8s.io/metrics
至于PodMetrics类型是如何添加到Kubernetes API中的,有一个Install函数可以注册API组和资源类型。如果你遵循这个函数,你会发现PodMetrics被添加到了scheme中。

  1. scheme.AddKnownTypes(SchemeGroupVersion,
  2. &NodeMetrics{},
  3. &NodeMetricsList{},
  4. &PodMetrics{},
  5. &PodMetricsList{},
  6. )

展开查看全部

相关问题