0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何獲取采集服務(wù)器Kubernetes監(jiān)控指標(biāo)

馬哥Linux運維 ? 來源:掘金 ? 作者:Honest1y ? 2021-09-26 10:13 ? 次閱讀

對比

node-exporter用于采集服務(wù)器層面的運行指標(biāo),包括機器的loadavg、filesystem、meminfo等基礎(chǔ)監(jiān)控,類似于傳統(tǒng)主機監(jiān)控維度的zabbix-agent。

metric-server/heapster是從api-server中獲取CPU、內(nèi)存使用率這種監(jiān)控指標(biāo),并把他們發(fā)送給存儲后端,如InfluxDB或云廠商,他當(dāng)前的核心作用是:為HPA等組件提供決策指標(biāo)支持。

kube-state-metrics關(guān)注于獲取Kubernetes各種資源的最新狀態(tài),如Deployment或者DaemonSet。

例如:

我調(diào)度了多少個Replicas?現(xiàn)在可用的有幾個?

多少個Pod是running/stopped/terminated狀態(tài)?

Pod重啟了多少次?

我有多少job在運行中?

這些指標(biāo)都由kube-state-metrics提供。

之所以沒有把kube-state-metrics納入到metric-server的能力中,是因為他們的關(guān)注點本質(zhì)上是不一樣的。

metric-server僅僅是獲取、格式化現(xiàn)有數(shù)據(jù),寫入特定的存儲,實質(zhì)上是一個監(jiān)控系統(tǒng)。

kube-state-metrics是將Kubernetes的運行狀況在內(nèi)存中做了個快照,并且獲取新的指標(biāo),但他沒有能力導(dǎo)出這些指標(biāo)。

部署metric-server

下載metric-server部署的yaml文件到本地。

wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml

拉取metric-server的鏡像到本地:

# docker pull zhaoqinchang/metrics-server:0.3.7 0.3.7: Pulling from zhaoqinchang/metrics-server 9ff2acc3204b: Pull complete 9d14b55ff9a0: Pull complete Digest:

sha256:c0efe772bb9e5c289db6cc4bc2002c268507d0226f2a3815f7213e00261c38e9 Status: Downloaded newer image for zhaoqinchang/metrics-server:0.3.7 docker.io/zhaoqinchang/metrics-server:0.3.7

修改components.yaml文件為如下內(nèi)容:

# cat components.yaml --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: system:aggregated-metrics-reader labels: rbac.authorization.k8s.io/aggregate-to-view: “true” rbac.authorization.k8s.io/aggregate-to-edit:

“true” rbac.authorization.k8s.io/aggregate-to-admin: “true” rules: - apiGroups: [“metrics.k8s.io”] resources: [“pods”, “nodes”] verbs: [“get”, “l(fā)ist”, “watch”] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: metrics-serverauth-delegator roleRef:

apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:auth-delegator subjects: - kind:

ServiceAccount name: metrics-server namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind:

RoleBinding metadata: name: metrics-server-auth-reader namespace: kube-system roleRef: apiGroup:

rbac.authorization.k8s.io kind: Role name: extension-apiserver-authentication-reader subjects: - kind:

ServiceAccount name: metrics-server namespace: kube-system --- apiVersion:

apiregistration.k8s.io/v1beta1 kind: APIService metadata: name: v1beta1.metrics.k8s.io spec: service: name: metrics-server namespace: kube-system group: metrics.k8s.io version:

v1beta1 insecureSkipTLSVerify: true groupPriorityMinimum: 100 versionPriority: 100 --- apiVersion:

v1 kind: ServiceAccount metadata: name: metrics-server namespace: kube-system --- apiVersion:

apps/v1 kind: Deployment metadata: name: metrics-server namespace: kube-system labels: k8s-app:

metrics-server spec: selector: matchLabels: k8s-app: metrics-server template: metadata: name: metrics-server labels: k8s-app: metrics-server spec: serviceAccountName: metrics-server volumes: # mount in tmp so we can safely use from-scratch images and/or read-only containers - name:

tmp-dir emptyDir: {} containers: - name: metrics-server image: zhaoqinchang/metrics-server:0.3.7 #修改鏡像為剛剛拉取下來的鏡像

imagePullPolicy: IfNotPresent args:

- --cert-dir=/tmp - --secure-port=4443 command: #添加以下三行command命令 - /metrics-server - --kubelet-preferred-address-types=InternalIP - --kubelet-insecure-tls ports: - name: main-port containerPort: 4443 protocol:

TCP securityContext: readOnlyRootFilesystem: true runAsNonRoot: true runAsUser: 1000 volumeMounts: - name: tmp-dir mountPath:

/tmp nodeSelector: kubernetes.io/os: linux --- apiVersion: v1 kind: Service metadata: name: metrics-server namespace: kube-system labels: kubernetes.io/name:

“Metrics-server” kubernetes.io/cluster-service: “true” spec: selector: k8s-app: metrics-server ports:

- port: 443 protocol: TCP targetPort: main-port --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: system:metrics-server rules: - apiGroups: - “” resources: - pods - nodes - nodes/stats - namespaces - configmaps verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: system:metrics-server roleRef:

apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:metrics-server subjects: - kind: ServiceAccount name: metrics-server namespace: kube-system部署metric-server:

# kubectl apply -f components.yaml clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created clusterrolebinding.rbac.authorization.k8s.io/metrics-serverauth-delegator created

rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created

apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created serviceaccount/metrics-server created

deployment.apps/metrics-server created service/metrics-server created

clusterrole.rbac.authorization.k8s.io/system:metrics-server created clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created

查看metric.k8s.io是否出現(xiàn)在Kubernetes集群的API群組列表中:

# kubectl api-versions | grep metrics metrics.k8s.io/v1beta1

使用

kubectl top命令可顯示節(jié)點和Pod對象的資源使用信息,它依賴于集群中的資源指標(biāo)API來收集各項指標(biāo)數(shù)據(jù)。它包含有Node和Pod兩個子命令,可分別顯示Node對象和Pod對象的相關(guān)資源占用率。

列出Node資源占用率命令的語法格式為“kubectl top node [-l label | NAME]”,例如下面顯示所有節(jié)點的資源占用狀況的結(jié)果中顯示了各節(jié)點累計CPU資源占用時長及百分比,以及內(nèi)容空間占用量及占用比例。必要時,也可以在命令直接給出要查看的特定節(jié)點的標(biāo)識,以及使用標(biāo)簽選擇器進行節(jié)點過濾。

[root@master metric]# kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% master 282m 14% 1902Mi 51% node-02 70m 3% 1371Mi 37% node-03 121m 1% 892Mi 11%

而名稱空間級別的Pod對象資源占用率的使用方法會略有不同,使用時,一般應(yīng)該跟定名稱空間及使用標(biāo)簽選擇器過濾出目標(biāo)Pod對象。例如,下面顯示kube-system名稱空間下的Pod資源使用狀況:

[root@master metric]# kubectl top pods -n kube-system NAME CPU(cores) MEMORY(bytes) etcd-master 32m 300Mi kube-apiserver-master 86m 342Mi kube-controller-manager-master 30m 48Mi kube-flannel-ds-l5ghn 5m

10Mi kube-flannel-ds-rqlm2 4m 12Mi kube-flannel-ds-v92r9 4m 14Mi kube-proxy-7vjcv 18m 15Mi kube-proxy-xrz8f 13m 21Mi kube-proxy-zpwn6 1m 14Mi kube-scheduler-master 7m 17Mi metrics-server-5549c7694f-7vb66 2m 14Mi

kubectl top命令為用戶提供簡潔、快速獲取Node對象及Pod對象系統(tǒng)資源占用狀況的接口,是集群運行和維護的常用命令之一。

原文鏈接:https://juejin.cn/post/6996862439560052773

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8701

    瀏覽量

    84552
  • 監(jiān)控系統(tǒng)

    關(guān)注

    21

    文章

    3769

    瀏覽量

    172340
收藏 人收藏

    評論

    相關(guān)推薦

    如何在阿里ECS服務(wù)器上架設(shè)自己的OpenVPN服務(wù)器?

    需要自己架設(shè)服務(wù)器,讓現(xiàn)場的IR615路由連接自己的服務(wù)器。能通過自己的服務(wù)器進行數(shù)據(jù)采集和遠程運維。
    發(fā)表于 07-25 06:14

    如何獲取DNS服務(wù)器IP?

    當(dāng)ESP8266在 STA 模式下連接時,訪問分配給 DHCP 客戶端的 DNS 服務(wù)器地址將非常有用。理想情況下,這些地址要么通過 wifi_get_ip_info 在ip_info結(jié)構(gòu)中返回,要么通過專用 API(例如 espconn_dns_getserver)返回。
    發(fā)表于 07-11 06:15

    服務(wù)器和虛擬服務(wù)器的區(qū)別是什么

    服務(wù)器和虛擬服務(wù)器是兩種常見的服務(wù)器類型,它們在很多方面有相似之處,但也有一些關(guān)鍵的區(qū)別。本文將詳細介紹云服務(wù)器和虛擬服務(wù)器的區(qū)別,包括它
    的頭像 發(fā)表于 07-02 09:48 ?328次閱讀

     K8S學(xué)習(xí)教程一:使用PetaExpress云服務(wù)器安裝Minikube 集群

    使得開發(fā)人員能夠在本地機器上輕松創(chuàng)建一個單節(jié)點的 Kubernetes 集群,從而方便開發(fā)、測試和學(xué)習(xí) Kubernetes。 我們看下如何使用PetaExpress云服務(wù)器安裝Minikube 集群
    的頭像 發(fā)表于 07-01 15:41 ?222次閱讀
     K8S學(xué)習(xí)教程一:使用PetaExpress云<b class='flag-5'>服務(wù)器</b>安裝Minikube 集群

    京準(zhǔn)科技、大數(shù)據(jù)監(jiān)控網(wǎng)絡(luò)里的NTP時鐘同步服務(wù)器應(yīng)用

    京準(zhǔn)科技、大數(shù)據(jù)網(wǎng)絡(luò)監(jiān)控系統(tǒng)里的NTP時鐘同步服務(wù)器應(yīng)用
    的頭像 發(fā)表于 06-06 14:15 ?203次閱讀

    服務(wù)器監(jiān)控完整指南

    運行混合云環(huán)境時。下面,恒訊科技小編我給大家介紹下云服務(wù)器監(jiān)控完整指南。 一、什么是云服務(wù)器監(jiān)控? 我們應(yīng)該根據(jù)既定的自定義指標(biāo)持續(xù)
    的頭像 發(fā)表于 03-20 17:19 ?326次閱讀

    linux服務(wù)器和windows服務(wù)器

    Linux服務(wù)器和Windows服務(wù)器是目前應(yīng)用最廣泛的兩種服務(wù)器操作系統(tǒng)。兩者各有優(yōu)劣,也適用于不同的應(yīng)用場景。本文將 對Linux服務(wù)器和Windows
    發(fā)表于 02-22 15:46

    為什么需要監(jiān)控SQL服務(wù)器?

    服務(wù)器是存儲、處理和管理數(shù)據(jù)的關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 工具或軟件,例如Microsoft的MSSQL、Oracle DB和PostgreSQL。此外,服務(wù)器執(zhí)行SQL查詢和命令來操作關(guān)系數(shù)據(jù)庫。實際上,SQL服務(wù)器
    的頭像 發(fā)表于 02-19 17:19 ?355次閱讀

    獨立服務(wù)器和云服務(wù)器的區(qū)別

    獨立服務(wù)器和云服務(wù)器的區(qū)別是很多用戶在選擇服務(wù)器時要做的課程,那么獨立服務(wù)器和云服務(wù)器的區(qū)別有哪些呢?
    的頭像 發(fā)表于 01-17 10:58 ?666次閱讀

    串口服務(wù)器助力環(huán)境監(jiān)測系統(tǒng)高效管理、遠程監(jiān)控

    物聯(lián)網(wǎng)的發(fā)展使得環(huán)境監(jiān)測系統(tǒng)具備了更強大的數(shù)據(jù)采集和分析能力。傳統(tǒng)的環(huán)境監(jiān)測系統(tǒng)通常需要人工到現(xiàn)場采集數(shù)據(jù),費時費力且容易受到外界干擾。而通過使用串口服務(wù)器,可以實現(xiàn)環(huán)境監(jiān)測系統(tǒng)的遠程數(shù)據(jù)采集
    的頭像 發(fā)表于 12-25 18:03 ?376次閱讀
    串口<b class='flag-5'>服務(wù)器</b>助力環(huán)境監(jiān)測系統(tǒng)高效管理、遠程<b class='flag-5'>監(jiān)控</b>

     物理服務(wù)器和大寬服務(wù)器怎么選

    物理服務(wù)器和大寬服務(wù)器的選擇需要根據(jù)具體的業(yè)務(wù)需求來決定。物理服務(wù)器是一種獨立的、非虛擬化的計算機設(shè)備,它通常被用作高性能應(yīng)用、數(shù)據(jù)庫、存儲和網(wǎng)絡(luò)等關(guān)鍵業(yè)務(wù)應(yīng)用的運行平臺。常見的物理服務(wù)器
    的頭像 發(fā)表于 12-20 10:50 ?439次閱讀

    TFTP服務(wù)器是什么如何下載文件

    讀取的文件。如果 TFTP 服務(wù)器接收了該請求,將打開連接,向客戶端發(fā)送請求獲取的文件數(shù)據(jù)。 發(fā)送的數(shù)據(jù)包是以定長 512 字節(jié)進行傳輸。如果文件數(shù)據(jù)大于 512字 節(jié),將分成多個數(shù)據(jù)包進行傳輸。 由于
    發(fā)表于 12-12 16:06

    weblogic的管理服務(wù)器具備的功能

    Weblogic的管理服務(wù)器是一個功能強大的工具,用于管理和監(jiān)控Weblogic應(yīng)用服務(wù)器。它提供了許多功能,可以幫助管理員輕松管理服務(wù)器和應(yīng)用程序。 一、概述 Weblogic管理
    的頭像 發(fā)表于 12-05 16:15 ?413次閱讀

    什么是Kubernetes CoreDNS?如何監(jiān)控 CoreDNS?

    如果您在 Kubernetes 中運行您的工作負載,并且您不知道如何監(jiān)控 CoreDNS,請繼續(xù)閱讀本文:如何使用 Prometheus 來抓取 CoreDNS 指標(biāo),您應(yīng)該檢查哪些指標(biāo)
    發(fā)表于 10-30 09:55 ?1951次閱讀
    什么是<b class='flag-5'>Kubernetes</b> CoreDNS?如何<b class='flag-5'>監(jiān)控</b> CoreDNS?

    監(jiān)控服務(wù)器怎么架設(shè)?

    在本文中,小編將給大家分析一下監(jiān)控服務(wù)器怎么架設(shè)? 監(jiān)控服務(wù)器架設(shè)通常需要以下步驟: 1、選擇云服務(wù)提供商: 選擇一個可靠的云
    的頭像 發(fā)表于 10-24 17:27 ?910次閱讀