【发布时间】:2022-01-11 00:17:51
【问题描述】:
Kubelet 有多个它监听的端点路径,例如/metrics、/metrics/cadvisor、/logs 等。可以通过运行kubectl get --raw /api/v1/nodes/<node-name>/proxy/<path>(在运行kubectl proxy 之后)轻松查询这些端点。
我的问题是如何获得 Kubelet 所服务的所有这些路径的列表?在 Kubelet 自己的代码 here 中可以找到一个列表,但这只是一个子集。例如/pods 不在该列表中,但在the code as well 中进一步定义。但是还有其他一些没有在代码中明确列出,例如/healthz,可以通过查看other lines of the code 来猜测。我还敢于相信其他插件或 3rd 方产品可能会导致 Kubelet 暴露更多路径。
我尝试使用/healthz?verbose,但它只返回基本信息,在路径列表附近没有任何内容:
[+]ping ok
[+]log ok
[+]syncloop ok
healthz check passed
Kubernetes API 服务器使用kubectl get --raw / 返回一个非常漂亮的路径列表,如下所示(由于长度而被截断)。是否有与 Kubelet 自己的路径等效的东西?
{
"paths": [
"/.well-known/openid-configuration",
"/api",
"/api/v1",
"/apis",
"/apis/",
"/apis/admissionregistration.k8s.io",
"/apis/admissionregistration.k8s.io/v1",
"/apis/admissionregistration.k8s.io/v1beta1",
"/apis/apiextensions.k8s.io",
"/apis/apiextensions.k8s.io/v1",
"/apis/apiextensions.k8s.io/v1beta1",
"/apis/apiregistration.k8s.io",
"/apis/apiregistration.k8s.io/v1",
"/apis/apiregistration.k8s.io/v1beta1",
"/apis/apps",
"/apis/apps/v1",
"/apis/authentication.k8s.io",
"/apis/authentication.k8s.io/v1",
"/apis/authentication.k8s.io/v1beta1",
"/apis/authorization.k8s.io",
"/apis/authorization.k8s.io/v1",
"/apis/authorization.k8s.io/v1beta1",
"/apis/autoscaling",
"/apis/autoscaling/v1",
"/apis/autoscaling/v2beta1",
"/apis/autoscaling/v2beta2",
"/apis/batch",
"/apis/batch/v1",
"/apis/batch/v1beta1",
"/apis/certificates.k8s.io",
....
【问题讨论】:
-
根据提供的信息:为什么要直接与kubelet交互,用例是什么?
-
@AndrewSkorkin 拥有此列表的一个原因是能够一眼看出 Kubelet 中运行的特定组件。例如,摘要 API 端点位于 /stats/summary,资源指标端点位于 /metrics/resource,而 cAdvisor 端点现在位于 /metrics/cAdvisor。由于监控组件发生了变化(例如,Summary API 最终将被弃用),因此查看特定端点是否存在可以快速反馈正在运行的内容
-
但我同意,这不是你在与 K8s 集群的日常交互中想要的东西
标签: kubernetes kubelet