W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
對(duì)于 Kubernetes,Metrics API 提供了一組基本的指標(biāo),以支持自動(dòng)伸縮和類似的用例。 該 API 提供有關(guān)節(jié)點(diǎn)和 Pod 的資源使用情況的信息, 包括 CPU 和內(nèi)存的指標(biāo)。如果將 Metrics API 部署到集群中, 那么 Kubernetes API 的客戶端就可以查詢這些信息,并且可以使用 Kubernetes 的訪問控制機(jī)制來管理權(quán)限。
?HorizontalPodAutoscaler
?(HPA) 和 ?VerticalPodAutoscaler
?(VPA) 使用 metrics API 中的數(shù)據(jù)調(diào)整工作負(fù)載副本和資源,以滿足客戶需求。
你也可以通過 ?kubectl top
? 命令來查看資源指標(biāo)。
Note:
Metrics API 及其啟用的指標(biāo)管道僅提供最少的 CPU 和內(nèi)存指標(biāo),以啟用使用 HPA 和/或 VPA 的自動(dòng)擴(kuò)展。 如果你想提供更完整的指標(biāo)集,你可以通過部署使用 Custom Metrics API 的第二個(gè) 指標(biāo)管道來作為簡單的 Metrics API 的補(bǔ)充。
圖 1 說明了資源指標(biāo)管道的架構(gòu)。
圖 1. 資源指標(biāo)管道
圖中從右到左的架構(gòu)組件包括以下內(nèi)容:
cAdvisor
?: 用于收集、聚合和公開 Kubelet 中包含的容器指標(biāo)的守護(hù)程序。
kubelet
?: 用于管理容器資源的節(jié)點(diǎn)代理。 可以使用 /metrics/resource 和 /stats kubelet API 端點(diǎn)訪問資源指標(biāo)。
Summary API
?: kubelet 提供的 API,用于發(fā)現(xiàn)和檢索可通過 /stats 端點(diǎn)獲得的每個(gè)節(jié)點(diǎn)的匯總統(tǒng)計(jì)信息。
metrics-server
?: 集群插件組件,用于收集和聚合從每個(gè) kubelet 中提取的資源指標(biāo)。 API 服務(wù)器提供 Metrics API 以供 HPA、VPA 和 kubectl top 命令使用。 Metrics Server 是 Metrics API 的參考實(shí)現(xiàn)。
Metrics API
?: Kubernetes API 支持訪問用于工作負(fù)載自動(dòng)縮放的 CPU 和內(nèi)存。 要在你的集群中進(jìn)行這項(xiàng)工作,你需要一個(gè)提供 Metrics API 的 API 擴(kuò)展服務(wù)器。Note: cAdvisor 支持從 cgroups 讀取指標(biāo),它適用于 Linux 上的典型容器運(yùn)行時(shí)。 如果你使用基于其他資源隔離機(jī)制的容器運(yùn)行時(shí),例如虛擬化,那么該容器運(yùn)行時(shí)必須支持 CRI 容器指標(biāo) 以便 kubelet 可以使用指標(biāo)。
FEATURE STATE: Kubernetes 1.8 [beta]
metrics-server 實(shí)現(xiàn)了 Metrics API。此 API 允許你訪問集群中節(jié)點(diǎn)和 Pod 的 CPU 和內(nèi)存使用情況。 它的主要作用是將資源使用指標(biāo)提供給 K8s 自動(dòng)縮放器組件。
下面是一個(gè) ?minikube
?節(jié)點(diǎn)的 Metrics API 請(qǐng)求示例,通過 ?jq
?管道處理以便于閱讀:
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes/minikube" | jq '.'
這是使用 ?curl
?來執(zhí)行的相同 API 調(diào)用:
curl http://localhost:8080/apis/metrics.k8s.io/v1beta1/nodes/minikube
響應(yīng)示例:
{
"kind": "NodeMetrics",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"name": "minikube",
"selfLink": "/apis/metrics.k8s.io/v1beta1/nodes/minikube",
"creationTimestamp": "2022-01-27T18:48:43Z"
},
"timestamp": "2022-01-27T18:48:33Z",
"window": "30s",
"usage": {
"cpu": "487558164n",
"memory": "732212Ki"
}
}
下面是一個(gè) ?kube-system
? 命名空間中的 ?kube-scheduler-minikube
? Pod 的 Metrics API 請(qǐng)求示例, 通過 ?jq
? 管道處理以便于閱讀:
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/kube-scheduler-minikube" | jq '.'
這是使用 ?curl
?來完成的相同 API 調(diào)用:
curl http://localhost:8080/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/kube-scheduler-minikube
響應(yīng)示例:
{
"kind": "PodMetrics",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"name": "kube-scheduler-minikube",
"namespace": "kube-system",
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/kube-scheduler-minikube",
"creationTimestamp": "2022-01-27T19:25:00Z"
},
"timestamp": "2022-01-27T19:24:31Z",
"window": "30s",
"containers": [
{
"name": "kube-scheduler",
"usage": {
"cpu": "9559630n",
"memory": "22244Ki"
}
}
]
}
Metrics API 在 k8s.io/metrics 代碼庫中定義。 你必須啟用 API 聚合層并為 ?metrics.k8s.io
? API 注冊(cè)一個(gè) APIService。
要了解有關(guān) Metrics API 的更多信息, 請(qǐng)參閱資源 Resource Metrics API Design、 metrics-server 代碼庫 和 Resource Metrics API。
Note: 你必須部署提供 Metrics API 服務(wù)的 metrics-server 或其他適配器才能訪問它。
CPU 報(bào)告為以 cpu 為單位測(cè)量的平均核心使用率。在 Kubernetes 中, 一個(gè) cpu 相當(dāng)于云提供商的 1 個(gè) vCPU/Core,以及裸機(jī) Intel 處理器上的 1 個(gè)超線程。
該值是通過對(duì)內(nèi)核提供的累積 CPU 計(jì)數(shù)器(在 Linux 和 Windows 內(nèi)核中)取一個(gè)速率得出的。 用于計(jì)算 CPU 的時(shí)間窗口顯示在 Metrics API 的窗口字段下。
內(nèi)存報(bào)告為在收集度量標(biāo)準(zhǔn)的那一刻的工作集大小,以字節(jié)為單位。
在理想情況下,“工作集”是在內(nèi)存壓力下無法釋放的正在使用的內(nèi)存量。 然而,工作集的計(jì)算因主機(jī)操作系統(tǒng)而異,并且通常大量使用啟發(fā)式算法來產(chǎn)生估計(jì)。
Kubernetes 模型中,容器工作集是由容器運(yùn)行時(shí)計(jì)算的與相關(guān)容器關(guān)聯(lián)的匿名內(nèi)存。 工作集指標(biāo)通常還包括一些緩存(文件支持)內(nèi)存,因?yàn)橹鳈C(jī)操作系統(tǒng)不能總是回收頁面。
metrics-server 從 kubelet 中獲取資源指標(biāo),并通過 Metrics API 在 Kubernetes API 服務(wù)器中公開它們,以供 HPA 和 VPA 使用。 你還可以使用 ?kubectl top
? 命令查看這些指標(biāo)。
metrics-server 使用 Kubernetes API 來跟蹤集群中的節(jié)點(diǎn)和 Pod。metrics-server 服務(wù)器通過 HTTP 查詢每個(gè)節(jié)點(diǎn)以獲取指標(biāo)。 metrics-server 還構(gòu)建了 Pod 元數(shù)據(jù)的內(nèi)部視圖,并維護(hù) Pod 健康狀況的緩存。 緩存的 Pod 健康信息可通過 metrics-server 提供的擴(kuò)展 API 獲得。
例如,對(duì)于 HPA 查詢,metrics-server 需要確定哪些 Pod 滿足 Deployment 中的標(biāo)簽選擇器。
metrics-server 調(diào)用 kubelet API 從每個(gè)節(jié)點(diǎn)收集指標(biāo)。根據(jù)它使用的度量服務(wù)器版本:
/metrics/resource
?/stats/summary
?Kubelet 在節(jié)點(diǎn)、卷、Pod 和容器級(jí)別收集統(tǒng)計(jì)信息, 并在Summary API 中提供它們的統(tǒng)計(jì)信息供消費(fèi)者閱讀。
下面是一個(gè) ?minikube
?節(jié)點(diǎn)的 Summary API 請(qǐng)求示例:
kubectl get --raw "/api/v1/nodes/minikube/proxy/stats/summary"
這是使用 ?curl
?來執(zhí)行的相同 API 調(diào)用:
curl http://localhost:8080/api/v1/nodes/minikube/proxy/stats/summary
Note:
從 metrics-server 0.6.x 開始,Summary API ?/stats/summary
? 端點(diǎn)被 ?/metrics/resource
? 端點(diǎn)替換。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: