日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
用MetricsServer對(duì)Kubernetes集群實(shí)現(xiàn)全面資源監(jiān)控

[[403353]]

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括個(gè)舊網(wǎng)站建設(shè)、個(gè)舊網(wǎng)站制作、個(gè)舊網(wǎng)頁(yè)制作以及個(gè)舊網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,個(gè)舊網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到個(gè)舊省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

【】不知您是否使用過Prometheus、Azure Monitor、AWS Container Insight之類的可觀察性工具,或者是諸如Logic Monitor之類的商業(yè)產(chǎn)品,來(lái)監(jiān)控Kubernetes集群,并在儀表板上顯示CPU和內(nèi)存等方面的資源指標(biāo)?其實(shí),Kubernetes具有一套內(nèi)置的Metrics API和一個(gè)簡(jiǎn)單的命令行查詢界面--kubectl top,可用于獲取某個(gè)Kubernetes對(duì)象的CPU和內(nèi)存消耗狀況的快照。

可用于從集群的Kubelets處收集資源使用數(shù)據(jù)的Kubernetes Metrics API,是一種依賴于Metrics Server集群的插件。而Metrics API的主要使用者(consumer)是Horizo??ntal Pod Autoscaler(HPA,)。它使用由Metrics API提供的指標(biāo),以及觀察到的資源狀態(tài)值,來(lái)縮放Pod的數(shù)量。除Metrics API之外,HPA還可從運(yùn)行在群集上的應(yīng)用程序(自定義的指標(biāo))和群集外的服務(wù)(外部指標(biāo))中,根據(jù)各項(xiàng)設(shè)定指標(biāo),以實(shí)現(xiàn)Pod的自動(dòng)擴(kuò)展。通常,外部應(yīng)用會(huì)向HPA提供一些典型示例,包括:基于開源事件的、自動(dòng)可伸縮性KEDA的服務(wù),以及Logic Monitor。與HPA相似,依賴于Metrics Server的Vertical Pod Autoscaler(VPA,)也可以自動(dòng)調(diào)整Pod中容器的CPU和內(nèi)存的相關(guān)限制。

可見,自動(dòng)縮放和監(jiān)控是Metrics API和Metrics Server的兩個(gè)主要用例。要深入研究Kubernetes監(jiān)控,我們勢(shì)必在集群上部署Metrics Server。如果您正在運(yùn)行AWS EKS集群,那么請(qǐng)參照EKS Metrics Server指南中的相關(guān)說明,在集群上安裝Kubernetes Metrics Server。具體而言,您可以在終端上使用如下命令,來(lái)實(shí)現(xiàn)輕松的安裝:

 
 
 
 
  1. Shell 
  2. kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 

在默認(rèn)情況下,Azure AKS群集已經(jīng)包括了Metrics Server的部署。因此,若要?jiǎng)?chuàng)建準(zhǔn)系統(tǒng)(barebone)的AKS集群,請(qǐng)?jiān)诮K端上執(zhí)行如下AZ命令:

 
 
 
 
  1. Shell 
  2. az group create --name --location australiaeast 
  3. az aks create -n --node-count 1 --node-vm-size Standard_B2s --load-balancer-sku basic --node-osdisk-size 32 --resource-group --generate-ssh-keys 
  4. az aks get-credentials --resource-group --name 

若要驗(yàn)證Metrics Server部署的運(yùn)行狀況,請(qǐng)執(zhí)行如下命令:

 
 
 
 
  1. Shell  
  2. kubectl get deployment metrics-server -n kube-system 

我們需要在集群上運(yùn)行一個(gè)應(yīng)用程序,以測(cè)試由Metrics Server實(shí)現(xiàn)的Metrics API的功效。為此,我們將Azure Voting App(https://github.com/Azure-Samples/azure-voting-app-redis)部署到該群集中。這是一個(gè)由Redis作為后端,以Python為前端的簡(jiǎn)單應(yīng)用。它的每個(gè)后端上都運(yùn)行著一個(gè)Pod。我們可以通過執(zhí)行如下終端命令,將該應(yīng)用部署到目標(biāo)集群中:

 
 
 
 
  1. Shell  
  2. kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml 

若要獲取應(yīng)用程序前端的外部IP地址,請(qǐng)執(zhí)行如下命令。值得注意的是,云端環(huán)境可能需要等待一段時(shí)間,才能為您的服務(wù)分配一個(gè)外部IP地址:

 
 
 
 
  1. Shell  
  2. kubectl describe services azure-vote-front | grep 'LoadBalancer Ingress' 

現(xiàn)在,讓我們?cè)诩荷线\(yùn)行一個(gè)功能齊全的應(yīng)用。通過由上述命令獲得的IP地址,瀏覽器可以導(dǎo)航至應(yīng)用程序的前端界面(如下圖所示)。

 

接下來(lái),讓我們開始監(jiān)控集群中的各種對(duì)象,及其狀態(tài)指標(biāo)。

監(jiān)控節(jié)點(diǎn)

該端點(diǎn)的Metrics API是:/apis/metrics.k8s.io/。若要訪問該API,您可以:

  • 通過使用如下命令實(shí)現(xiàn)端口轉(zhuǎn)發(fā):
 
 
 
 
  1. Shell  
  2. kubectl port-forward -n kube-system svc/metrics-server :443 
  • 使用kubectl的相關(guān)命令:
 
 
 
 
  1. Shell  
  2. kubectl get --raw "/apis/metrics.k8s.io/v1beta1/" | jq '.' 

下面,讓我們通過向/apis/metrics.k8s.io/v1beta1/端點(diǎn)發(fā)送GET請(qǐng)求(如下圖所示),來(lái)檢查可用于通過API查詢的資源:

 

若要查看集群所有節(jié)點(diǎn)的各項(xiàng)指標(biāo)的快照,請(qǐng)執(zhí)行如下命令:

 
 
 
 
  1. Shell 
  2. kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes | jq '.' 

下圖展示了終端上的命令輸出:

為了將請(qǐng)求的范圍縮小到單個(gè)節(jié)點(diǎn)上,我們可以向/apis/metrics.k8s.io/v1beta1/nodes/ 端點(diǎn)發(fā)送GET請(qǐng)求。

監(jiān)控Pods

如下面的命令所示,您可以通過分別向/apis/metrics.k8s.io/v1beta1/pods端點(diǎn)和/apis/metrics.k8s.io/v1beta1/pods/ 端點(diǎn)發(fā)送GET請(qǐng)求,來(lái)查詢所有Pod或特定Pod的狀態(tài)指標(biāo):

 
 
 
 
  1. Shell 
  2. kubectl get --raw /apis/metrics.k8s.io/v1beta1/pods | jq '.' 

下圖展示了終端上有關(guān)集群中Pod的狀況快照:

 

如果某個(gè)Pod由多個(gè)容器組成,那么其API的響應(yīng)將包含每個(gè)容器資源的統(tǒng)計(jì)信息。您可以使用如下命令將請(qǐng)求定向到單個(gè)Pod上。

 
 
 
 
  1. Shell 
  2. kubectl get --raw /apis/metrics.k8s.io/v1beta1/namespaces/default/pods/ 

Kubernetes的命令行界面:kubectl top

如果您覺得原始的Metrics API交互并不太方便,則可以使用Kubernetes命令行界面的相關(guān)命令--kubectl top(具體命令如下),來(lái)查看所有節(jié)點(diǎn)與Pod、以及特定節(jié)點(diǎn)與Pod的資源消耗統(tǒng)計(jì)信息:

 
 
 
 
  1. Shell 
  2. kubectl top node 
  3. kubectl top pods --all-namespaces 

下圖展示了集群中節(jié)點(diǎn)和容器的資源狀態(tài)快照:

 

監(jiān)控容器

若要檢查某個(gè)Pod中各個(gè)容器所消耗的資源,請(qǐng)將參數(shù)—container添加到top命令中,如下面所示:

 
 
 
 
  1. Shell 
  2. kubectl top pods --all-namespaces --containers 

提示:若要了解Kubernetes CLI命令的具體用法,請(qǐng)使用命令--kubectl help ,以快速獲取。例如,您可以直接輸入:kubectl help top。

用top了解容器內(nèi)部

眾所周知,top是在Linux上廣為流行的命令,它可以方便用戶監(jiān)控Linux上的不同進(jìn)程、及其資源的使用情況。而且默認(rèn)情況下,該命令已安裝在每一種Linux發(fā)行版上了。在此,我們可以借用該命令,來(lái)深入監(jiān)控容器內(nèi)部正在運(yùn)行的各個(gè)進(jìn)程。具體而言,我們可以將shell切入到一個(gè)正在運(yùn)行的容器上,并以非交互模式運(yùn)行top。請(qǐng)參見如下命令:

 
 
 
 
  1. Shell 
  2. kubectl exec  -- top -bn1 

由于我們是在默認(rèn)(default)名稱空間中,部署了應(yīng)用示例Azure Vote App,因此我們將針對(duì)該應(yīng)用程序中的每個(gè)pod,執(zhí)行如下top命令:

 
 
 
 
  1. Shell 
  2. kubectl get pods -n default -o custom-columns=name:metadata.name --no-headers | xargs -I{} sh -c 'echo {}; kubectl exec {} -- top -bn1' 

下圖展示了終端上輸出的執(zhí)行結(jié)果:

具體輸出內(nèi)容包括:

1. 系統(tǒng)時(shí)間、正常運(yùn)行時(shí)間、以及用戶會(huì)話。

2. 用到的內(nèi)存:RAM和Swap(磁盤的一部分,功能類似RAM)。

3. 在容器中運(yùn)行的進(jìn)程。

4. 基于各種進(jìn)程花費(fèi)的CPU時(shí)間,得出的CPU使用率。

5. 平均加載時(shí)間(如:1、5或15分鐘)。

6. 各項(xiàng)任務(wù)特征,包括:進(jìn)程ID、啟動(dòng)進(jìn)程的用戶、Nice值、優(yōu)先級(jí)、內(nèi)存的消耗、進(jìn)程的狀態(tài)、CPU時(shí)間、以及進(jìn)程名稱。

監(jiān)控Kubernetes狀態(tài)

Kube-state-metrics是一種服務(wù),可用于偵聽Kubernetes API服務(wù)器,并生成有關(guān)對(duì)象狀態(tài)(例如部署、節(jié)點(diǎn)和Pod)的狀態(tài)指標(biāo)。當(dāng)然,kube-state-metrics服務(wù)不會(huì)持久保存數(shù)據(jù),它僅通過提供一個(gè)測(cè)量端點(diǎn),為所有請(qǐng)求對(duì)象的最新數(shù)據(jù)點(diǎn)提供服務(wù)。您可以使用諸如Prometheus之類的工具,來(lái)捕獲服務(wù)端點(diǎn),并將數(shù)據(jù)持久性地保存在永久性存儲(chǔ)中。

您可以通過GitHub上的相關(guān)文檔,獲悉有關(guān)kube-state-metrics服務(wù)的背景知識(shí),以及安裝與使用指南的更多信息。值得注意的是,kube-state-metrics并不能替代Metrics Server。畢竟Metrics Server可以幫助用戶監(jiān)控群集節(jié)點(diǎn)和Pod上的CPU與內(nèi)存的使用情況。而kub??e-state-metrics服務(wù)則是協(xié)助用戶監(jiān)控有關(guān)Pod、節(jié)點(diǎn)、以及其他Kubernetes對(duì)象的數(shù)量、運(yùn)行狀況、以及可用性信息等群集狀態(tài)。

小結(jié)

在本文中,我們學(xué)習(xí)了如何將Metrics Server安裝到集群中,也探討了如何使用各個(gè)級(jí)別的監(jiān)控命令,來(lái)獲悉Node、Pod和Container的資源使用情況。此外,我們還學(xué)習(xí)了如何使用Linux的top命令,來(lái)分析容器中的進(jìn)程消耗資源的程度。最后,我們討論了kubernetes-state-metrics服務(wù)在監(jiān)控Kubernetes對(duì)象狀態(tài)中發(fā)揮的作用,以及它與Metrics Server之間的關(guān)鍵性區(qū)別。

【譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為.com】

 


網(wǎng)頁(yè)題目:用MetricsServer對(duì)Kubernetes集群實(shí)現(xiàn)全面資源監(jiān)控
網(wǎng)頁(yè)網(wǎng)址:http://www.dlmjj.cn/article/djcgijp.html