新聞中心
資源指標管道
對于 Kubernetes,Metrics API 提供了一組基本的指標,以支持自動伸縮和類似的用例。 該 API 提供有關節(jié)點和 Pod 的資源使用情況的信息, 包括 CPU 和內存的指標。如果將 Metrics API 部署到集群中, 那么 Kubernetes API 的客戶端就可以查詢這些信息,并且可以使用 Kubernetes 的訪問控制機制來管理權限。

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


咨詢
建站咨詢
