新聞中心
資源指標(biāo)管道
對(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 的訪問(wèn)控制機(jī)制來(lái)管理權(quán)限。

成都創(chuàng)新互聯(lián)公司成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元廣靈做網(wǎng)站,已為上家服務(wù),為廣靈各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
?HorizontalPodAutoscaler ?(HPA) 和 ?VerticalPodAutoscaler ?(VPA) 使用 metrics API 中的數(shù)據(jù)調(diào)整工作負(fù)載副本和資源,以滿足客戶需求。
你也可以通過(guò) ?kubectl top? 命令來(lái)查看資源指標(biāo)。
Note:
Metrics API 及其啟用的指標(biāo)管道僅提供最少的 CPU 和內(nèi)存指標(biāo),以啟用使用 HPA 和/或 VPA 的自動(dòng)擴(kuò)展。 如果你想提供更完整的指標(biāo)集,你可以通過(guò)部署使用 Custom Metrics API 的第二個(gè) 指標(biāo)管道來(lái)作為簡(jiǎn)單的 Metrics API 的補(bǔ)充。
圖 1 說(shuō)明了資源指標(biāo)管道的架構(gòu)。
圖 1. 資源指標(biāo)管道
圖中從右到左的架構(gòu)組件包括以下內(nèi)容:
- ?
cAdvisor?: 用于收集、聚合和公開(kāi) Kubelet 中包含的容器指標(biāo)的守護(hù)程序。 - ?
kubelet?: 用于管理容器資源的節(jié)點(diǎn)代理。 可以使用 /metrics/resource 和 /stats kubelet API 端點(diǎn)訪問(wèn)資源指標(biāo)。 - ?
Summary API?: kubelet 提供的 API,用于發(fā)現(xiàn)和檢索可通過(guò) /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 支持訪問(wèn)用于工作負(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)。
Metrics API
FEATURE STATE: Kubernetes 1.8 [beta]
metrics-server 實(shí)現(xiàn)了 Metrics API。此 API 允許你訪問(wèn)集群中節(jié)點(diǎn)和 Pod 的 CPU 和內(nèi)存使用情況。 它的主要作用是將資源使用指標(biāo)提供給 K8S 自動(dòng)縮放器組件。
下面是一個(gè) ?minikube ?節(jié)點(diǎn)的 Metrics API 請(qǐng)求示例,通過(guò) ?jq ?管道處理以便于閱讀:
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes/minikube" | jq '.'
這是使用 ?curl ?來(lái)執(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)求示例, 通過(guò) ?jq? 管道處理以便于閱讀:
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/kube-scheduler-minikube" | jq '.'
這是使用 ?curl ?來(lái)完成的相同 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 代碼庫(kù)中定義。 你必須啟用 API 聚合層并為 ?metrics.k8s.io? API 注冊(cè)一個(gè) APIService。
要了解有關(guān) Metrics API 的更多信息, 請(qǐng)參閱資源 Resource Metrics API Design、 metrics-server 代碼庫(kù) 和 Resource Metrics API。
Note: 你必須部署提供 Metrics API 服務(wù)的 metrics-server 或其他適配器才能訪問(wèn)它。
度量資源用量
CPU
CPU 報(bào)告為以 cpu 為單位測(cè)量的平均核心使用率。在 Kubernetes 中, 一個(gè) cpu 相當(dāng)于云提供商的 1 個(gè) vCPU/Core,以及裸機(jī) Intel 處理器上的 1 個(gè)超線程。
該值是通過(guò)對(duì)內(nèi)核提供的累積 CPU 計(jì)數(shù)器(在 Linux 和 Windows 內(nèi)核中)取一個(gè)速率得出的。 用于計(jì)算 CPU 的時(shí)間窗口顯示在 Metrics API 的窗口字段下。
內(nèi)存
內(nèi)存報(bào)告為在收集度量標(biāo)準(zhǔn)的那一刻的工作集大小,以字節(jié)為單位。
在理想情況下,“工作集”是在內(nèi)存壓力下無(wú)法釋放的正在使用的內(nèi)存量。 然而,工作集的計(jì)算因主機(jī)操作系統(tǒng)而異,并且通常大量使用啟發(fā)式算法來(lái)產(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)不能總是回收頁(yè)面。
Metrics 服務(wù)器
metrics-server 從 kubelet 中獲取資源指標(biāo),并通過(guò) Metrics API 在 Kubernetes API 服務(wù)器中公開(kāi)它們,以供 HPA 和 VPA 使用。 你還可以使用 ?kubectl top? 命令查看這些指標(biāo)。
metrics-server 使用 Kubernetes API 來(lái)跟蹤集群中的節(jié)點(diǎn)和 Pod。metrics-server 服務(wù)器通過(guò) HTTP 查詢每個(gè)節(jié)點(diǎn)以獲取指標(biāo)。 metrics-server 還構(gòu)建了 Pod 元數(shù)據(jù)的內(nèi)部視圖,并維護(hù) Pod 健康狀況的緩存。 緩存的 Pod 健康信息可通過(guò) 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ù)器版本:
- 版本 v0.6.0+ 中,使用指標(biāo)資源端點(diǎn) ?
/metrics/resource? - 舊版本中使用 Summary API 端點(diǎn) ?
/stats/summary?
Summary API 來(lái)源
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 ?來(lái)執(zhí)行的相同 API 調(diào)用:
curl http://localhost:8080/api/v1/nodes/minikube/proxy/stats/summary
Note:
從 metrics-server 0.6.x 開(kāi)始,Summary API ?
/stats/summary? 端點(diǎn)被 ?
/metrics/resource? 端點(diǎn)替換。
網(wǎng)頁(yè)題目:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes資源指標(biāo)管道
標(biāo)題路徑:http://www.dlmjj.cn/article/dhpcojj.html


咨詢
建站咨詢
