久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Kubernetes資源指標管道

2023-12-29 177

Kubernetes是一個流行的容器編排平臺,Metrics API是其提供的一種API,用于收集和暴露關(guān)于節(jié)點和Pod的資源使用情況的指標。這些指標可以用于支持自動擴展、監(jiān)控和調(diào)優(yōu)等用例。通過部署Metrics API到Kubernetes集群中,Kubernetes API客戶端可以查詢這些指標,并在必要時使用Kubernetes的訪問控制機制來管理權(quán)限。

Metrics API提供了一組基本的指標,包括CPU和內(nèi)存使用情況等,這些指標可以幫助管理員更好地了解他們的集群的性能和健康狀況。同時,這些指標也可以用于實現(xiàn)自動伸縮,根據(jù)實際負載情況動態(tài)調(diào)整集群中節(jié)點和Pod的數(shù)量。

HorizontalPodAutoscaler (HPA) 和 VerticalPodAutoscaler (VPA) 使用 metrics API 中的數(shù)據(jù)調(diào)整工作負載副本和資源,以滿足客戶需求。也可以通過 kubectl top 命令來查看資源指標。

注意:Metrics API 及其啟用的指標管道僅提供最少的 CPU 和內(nèi)存指標,以啟用使用 HPA 和/或 VPA 的自動擴展。 如果想提供更完整的指標集,可以通過部署使用 Custom Metrics API 的第二個指標管道來作為簡單的 Metrics API 的補充。

一、資源指標管道架構(gòu)

下圖說明了資源指標管道的架構(gòu):

Kubernetes資源指標管道

圖中從右到左的架構(gòu)組件包括以下內(nèi)容:

1、cAdvisor: 用于收集、聚合和公開 Kubelet 中包含的容器指標的守護程序。

2、kubelet: 用于管理容器資源的節(jié)點代理。 可以使用 /metrics/resource 和 /stats kubelet API 端點訪問資源指標。

3、節(jié)點層面資源指標: kubelet 提供的 API,用于發(fā)現(xiàn)和檢索可通過 /metrics/resource 端點獲得的每個節(jié)點的匯總統(tǒng)計信息。

4、metrics-server: 集群插件組件,用于收集和聚合從每個 kubelet 中提取的資源指標。 API 服務(wù)器提供 Metrics API 以供 HPA、VPA 和 kubectl top 命令使用。Metrics Server 是 Metrics API 的參考實現(xiàn)。

5、Metrics API: Kubernetes API 支持訪問用于工作負載自動縮放的 CPU 和內(nèi)存。 要在集群中進行這項工作,需要一個提供 Metrics API 的 API 擴展服務(wù)器。

注意:cAdvisor 支持從 cgroups 讀取指標,它適用于 Linux 上的典型容器運行時。 如果使用基于其他資源隔離機制的容器運行時,例如虛擬化,那么該容器運行時必須支持 CRI 容器指標 以便 kubelet 可以使用指標。

二、Metrics API

metrics-server 實現(xiàn)了 Metrics API。此 API 允許訪問集群中節(jié)點和 Pod 的 CPU 和內(nèi)存使用情況。 它的主要作用是將資源使用指標提供給 K8s 自動縮放器組件。

下面是一個 minikube 節(jié)點的 Metrics API 請求示例,通過 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"
}
}

下面是一個 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 調(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在Kubernetes的代碼庫中定義,具體路徑是k8s.io/metrics。為了使用Metrics API,需要在Kubernetes集群上啟用API聚合層,并注冊一個名為metrics.k8s.io的APIService。

三、度量資源用量

1、CPU

CPU 報告為以 cpu 為單位測量的平均核心使用率。在 Kubernetes 中, 一個 cpu 相當于云提供商的 1 個 vCPU/Core,以及裸機 Intel 處理器上的 1 個超線程。

該值是通過對內(nèi)核提供的累積 CPU 計數(shù)器(在 Linux 和 Windows 內(nèi)核中)取一個速率得出的。 用于計算 CPU 的時間窗口顯示在 Metrics API 的窗口字段下。

2、內(nèi)存

內(nèi)存報告為在收集度量標準的那一刻的工作集大小,以字節(jié)為單位。在理想情況下,“工作集”是在內(nèi)存壓力下無法釋放的正在使用的內(nèi)存量。 然而,工作集的計算因主機操作系統(tǒng)而異,并且通常大量使用啟發(fā)式算法來產(chǎn)生估計。

Kubernetes 模型中,容器工作集是由容器運行時計算的與相關(guān)容器關(guān)聯(lián)的匿名內(nèi)存。 工作集指標通常還包括一些緩存(文件支持)內(nèi)存,因為主機操作系統(tǒng)不能總是回收頁面。

四、Metrics服務(wù)器

metrics-server 從 kubelet 中獲取資源指標,并通過 Metrics API 在 Kubernetes API 服務(wù)器中公開它們,以供 HPA 和 VPA 使用。 還可以使用 kubectl top 命令查看這些指標。

metrics-server 使用 Kubernetes API 來跟蹤集群中的節(jié)點和 Pod。metrics-server 服務(wù)器通過 HTTP 查詢每個節(jié)點以獲取指標。 metrics-server 還構(gòu)建了 Pod 元數(shù)據(jù)的內(nèi)部視圖,并維護 Pod 健康狀況的緩存。 緩存的 Pod 健康信息可通過 metrics-server 提供的擴展 API 獲得。

例如,對于 HPA 查詢,metrics-server 需要確定哪些 Pod 滿足 Deployment 中的標簽選擇器。

metrics-server 調(diào)用 kubelet API 從每個節(jié)點收集指標。根據(jù)它使用的 metrics-server 版本:

  • 版本 v0.6.0+ 中,使用指標資源端點 /metrics/resource
  • 舊版本中使用 Summary API 端點 /stats/summary
  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。