国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kubernetes核心指標監(jiān)控——Metrics Server詳解

這篇具有很好參考價值的文章主要介紹了Kubernetes核心指標監(jiān)控——Metrics Server詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、概述

從Kubernetes v1.8 開始,資源使用情況的監(jiān)控可以通過 Metrics API的形式獲取,例如容器CPU和內存使用率。這些度量可以由用戶直接訪問(例如,通過使用kubectl top命令),或者由集群中的控制器(例如,Horizontal Pod Autoscaler)使用來進行決策,具體的組件為Metrics Server,用來替換之前的heapster,heapster從1.11開始逐漸被廢棄。

Metrics-Server是集群核心監(jiān)控數據的聚合器。通俗地說,它存儲了集群中各節(jié)點的監(jiān)控數據,并且提供了API以供分析和使用。Metrics-Server作為一個 Deployment對象默認部署在Kubernetes集群中。不過準確地說,它是Deployment,Service,ClusterRole,ClusterRoleBinding,APIService,RoleBinding等資源對象的綜合體。

項目地址:https://github.com/kubernetes-sigs/metrics-server ,目前穩(wěn)定版本是v0.6.2。

metrics-server,k8s,Prometheus,kubernetes,docker,容器

metric-server主要用來通過aggregate api向其它組件(kube-scheduler、HorizontalPodAutoscaler、Kubernetes集群客戶端等)提供集群中的pod和node的cpu和memory的監(jiān)控指標,彈性伸縮中的podautoscaler就是通過調用這個接口來查看pod的當前資源使用量來進行pod的擴縮容的。

需要注意的是:

  • metric-server提供的是實時的指標(實際是最近一次采集的數據,保存在內存中),并沒有數據庫來存儲
  • 這些數據指標并非由metric-server本身采集,而是由每個節(jié)點上的cadvisor采集,metric-server只是發(fā)請求給cadvisor并將metric格式的數據轉換成aggregate api
  • 由于需要通過aggregate api來提供接口,需要集群中的kube-apiserver開啟該功能(開啟方法可以參考官方社區(qū)的文檔)

2、部署Metrics Server

2.1 下載并部署Metrics Server

下載部署清單:

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

修改部署清單內容:

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    k8s-app: metrics-server
    rbac.authorization.k8s.io/aggregate-to-admin: "true"
    rbac.authorization.k8s.io/aggregate-to-edit: "true"
    rbac.authorization.k8s.io/aggregate-to-view: "true"
  name: system:aggregated-metrics-reader
rules:
- apiGroups:
  - metrics.k8s.io
  resources:
  - pods
  - nodes
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    k8s-app: metrics-server
  name: system:metrics-server
rules:
- apiGroups:
  - ""
  resources:
  - nodes/metrics
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - pods
  - nodes
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
    k8s-app: metrics-server
  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: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server:system:auth-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: ClusterRoleBinding
metadata:
  labels:
    k8s-app: metrics-server
  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
---
apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
spec:
  ports:
  - name: https
    port: 443
    protocol: TCP
    targetPort: https
  selector:
    k8s-app: metrics-server
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
spec:
  selector:
    matchLabels:
      k8s-app: metrics-server
  strategy:
    rollingUpdate:
      maxUnavailable: 0
  template:
    metadata:
      labels:
        k8s-app: metrics-server
    spec:
      containers:
      - args:
        - --cert-dir=/tmp
        - --secure-port=4443
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --kubelet-use-node-status-port
        - --metric-resolution=15s
        - --kubelet-insecure-tls
        image: k8s.gcr.io/metrics-server/metrics-server:v0.6.2
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /livez
            port: https
            scheme: HTTPS
          periodSeconds: 10
        name: metrics-server
        ports:
        - containerPort: 4443
          name: https
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /readyz
            port: https
            scheme: HTTPS
          initialDelaySeconds: 20
          periodSeconds: 10
        resources:
          requests:
            cpu: 100m
            memory: 200Mi
        securityContext:
          allowPrivilegeEscalation: false
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 1000
        volumeMounts:
        - mountPath: /tmp
          name: tmp-dir
      nodeSelector:
        kubernetes.io/os: linux
      priorityClassName: system-cluster-critical
      serviceAccountName: metrics-server
      volumes:
      - emptyDir: {}
        name: tmp-dir
---
apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  labels:
    k8s-app: metrics-server
  name: v1beta1.metrics.k8s.io
spec:
  group: metrics.k8s.io
  groupPriorityMinimum: 100
  insecureSkipTLSVerify: true
  service:
    name: metrics-server
    namespace: kube-system
  version: v1beta1
  versionPriority: 100

在deploy中,spec.template.containers.args字段中加上--kubelet-insecure-tls選項,表示不驗證客戶端證書;上述清單主要用deploy控制器將metrics server運行為一個pod,然后授權metrics-server用戶能夠對pod/node資源進行只讀權限;然后把metrics.k8s.io/v1beta1注冊到原生apiserver上,讓其客戶端訪問metrics.k8s.io下的資源能夠被路由至metrics-server這個服務上進行響應;

鏡像被墻怎么辦?

修改鏡像 k8s.gcr.io/metrics-server/metrics-server:v0.6.2 -> admin4j/metrics-server:v0.6.2

或者參考 k8s鏡像下載不下來?利用 github Action 自己動手一次性解決難題,豐衣足食

應用資源清單:

[root@master1 metrics-server]# kubectl apply -f components.yaml
serviceaccount/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
service/metrics-server created
deployment.apps/metrics-server created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created

2.2 驗證Metrics Server組件部署成功

(1)查看原生apiserver是否有metrics.k8s.io/v1beta1

[root@master1 metrics-server]# kubectl api-versions|grep metrics
metrics.k8s.io/v1beta1

可以看到metrics.k8s.io/v1beta1群組已經注冊到原生apiserver上。

(2)查看metrics server pod是否運行正常

[root@master1 ~]# kubectl get pods -n=kube-system |grep metrics
metrics-server-855cc6b9d-g6xsf  1/1   Running  0     18h

可以看到對應pod已經正常運行,接著查看pod日志,只要metrics server pod沒有出現錯誤日志,或者無法注冊等信息,就表示pod里的容器運行正常。

(3)使用kubectl top 命令查看pod的cpu ,內存占比,看看對應命令是否可以正常執(zhí)行,如果Metrics Server服務有異常的話會報Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)錯誤。

[root@master1 ~]# kubectl top nodes
NAME      CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%  
master1   272m         3%     4272Mi          29%      
node1     384m         5%     9265Mi          30%      
node2     421m         5%     14476Mi         48%  

可以看到kubectl top命令可以正常執(zhí)行,說明metrics server 部署成功沒有問題。

3、原理

Metrics server定時從Kubelet的Summary API(類似/ap1/v1/nodes/nodename/stats/summary)采集指標信息,這些聚合過的數據將存儲在內存中,且以metric-api的形式暴露出去。

Metrics server復用了api-server的庫來實現自己的功能,比如鑒權、版本等,為了實現將數據存放在內存中嗎,去掉了默認的etcd存儲,引入了內存存儲(即實現Storage interface)。

因為存放在內存中,因此監(jiān)控數據是沒有持久化的,可以通過第三方存儲來拓展。

來看下Metrics-Server的架構:

metrics-server,k8s,Prometheus,kubernetes,docker,容器

從 Kubelet、cAdvisor 等獲取度量數據,再由metrics-server提供給 Dashboard、HPA 控制器等使用。本質上metrics-server相當于做了一次數據的轉換,把cadvisor格式的數據轉換成了kubernetes的apijson格式。由此我們不難猜測,metrics-server的代碼中必然存在這種先從metric中獲取接口中的所有信息,再解析出其中的數據的過程。我們給metric-server發(fā)送請求時,metrics-server中已經定期從中cadvisor獲取好數據了,當請求發(fā)過來時直接返回緩存中的數據。

4、如何獲取監(jiān)控數據

Metrics-Server通過kubelet獲取監(jiān)控數據。

在1.7版本之前,k8s在每個節(jié)點都安裝了一個叫做cAdvisor的程序,負責獲取節(jié)點和容器的CPU,內存等數據;而在1.7版本及之后,k8s將cAdvisor精簡化內置于kubelet中,因此可直接從kubelet中獲取數據。

5、如何提供監(jiān)控數據

metrics-server,k8s,Prometheus,kubernetes,docker,容器

Metrics-Server通過metrics API提供監(jiān)控數據。

先說下API聚合機制,API聚合機制是kubernetes 1.7版本引入的特性,能將用戶擴展的API注冊至API Server上。

API Server在此之前只提供kubernetes資源對象的API,包括資源對象的增刪查改功能。有了API聚合機制之后,用戶可以發(fā)布自己的API,而Metrics-Server用到的metrics APIcustom metrics API均屬于API聚合機制的應用。

用戶可通過配置APIService資源對象以使用API聚合機制,如下是metrics API的配置文件:

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

如上,APIService提供了一個名為v1beta1.metrics.k8s.io的API,并綁定至一個名為metrics-server的Service資源對象。

可以通過kubectl get apiservices命令查詢集群中的APIService。

因此,訪問Metrics-Server的方式如下:

/apis/metrics.k8s.io/v1beta1  --->   metrics-server.kube-system.svc  --->   x.x.x.x
 
+---------+       +-----------+                   +------------------------+        +-----------------------------+
| 發(fā)起請求 +----->+ API Server +----------------->+ Service:metrics-server +-------->+ Pod:metrics-server-xxx-xxx |

有了訪問Metrics-Server的方式,HPA,kubectl top等對象就可以正常工作了。

6、總結

kubernetes的新監(jiān)控體系中,metrics-server屬于Core metrics(核心指標),提供API metrics.k8s.io,僅提供Node和Pod的CPU和內存使用情況。而其他Custom Metrics(自定義指標)由Prometheus等組件來完成,后續(xù)文章將對自定義指標進行解析。

參考:https://staight.github.io/2019/09/12/metrics-server%E6%B5%85%E8%B0%88/

參考:http://yost.top/2020/05/17/about-metric-server/

參考:https://yasongxu.gitbook.io/container-monitor/yi-.-kai-yuan-fang-an/di-1-zhang-cai-ji/metrics-server文章來源地址http://www.zghlxwxcb.cn/news/detail-802067.html

到了這里,關于Kubernetes核心指標監(jiān)控——Metrics Server詳解的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【k8s、云原生】基于metrics-server彈性伸縮

    【k8s、云原生】基于metrics-server彈性伸縮

    第四階段 時 ?間:2023年8月18日 參加人:全班人員 內 ?容: 基于metrics-server彈性伸縮 目錄 一、Kubernetes部署方式 (一)minikube (二)二進制包 (三)Kubeadm 二、基于kubeadm部署K8S集群 (一)環(huán)境準備 (二)部署kubernetes集群 (三)安裝Dashboard UI (四)metrics-server服務部署 (

    2024年02月12日
    瀏覽(23)
  • K8S--安裝metrics-server,解決error: Metrics API not available問題

    K8S--安裝metrics-server,解決error: Metrics API not available問題

    原文網址:K8S--安裝metrics-server,解決error: Metrics API not available問題-CSDN博客 本文介紹K8S通過安裝metrics-server來解決error: Metrics API not available問題的方法。 Metrics Server采用了Kubernetes Metrics API的標準,它使用HTTP接口來暴露度量指標數據,通過輪詢來收集這些數據,然后將其存儲在

    2024年02月22日
    瀏覽(31)
  • Kubernetes 筆記(17)— 系統(tǒng)監(jiān)控、使用Metrics Server、hpa 自動伸縮 Pod 數量、Prometheus 的使用

    Kubernetes 筆記(17)— 系統(tǒng)監(jiān)控、使用Metrics Server、hpa 自動伸縮 Pod 數量、Prometheus 的使用

    如果你對 Linux 系統(tǒng)有所了解的話,也許知道有一個命令 top 能夠實時顯示當前系統(tǒng)的 CPU 和內存利用率,它是性能分析和調優(yōu)的基本工具,非常有用。 Kubernetes 也提供了類似的命令,就是 kubectl top ,不過默認情況下這個命令不會生效,必須要安裝一個插件 Metrics Server 才可以。

    2024年02月01日
    瀏覽(22)
  • k8s筆記24--安裝metrics-server及錯誤處理

    最近一個同事在老版本的 k8s 上安裝metrics-server,pod一直處于running 非就緒狀態(tài),經過查看發(fā)現存在 tls 、軟件版本、 資源權限等問題。記錄在此處,以便于后續(xù)查閱、同類問題續(xù)更。 參考官方文檔 kubernetes-sigs/metrics-server 執(zhí)行如下命令即可 注意事項: 如果需要忽略 Kubelet c

    2024年02月11日
    瀏覽(33)
  • k8s(1.28)使用Helm安裝metrics-server

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 提示:這里可以添加本文要記錄的大概內容: metrics-server安裝后,可以查看集群的node和pod的CPU和Memory占用情況,非常有用。 提示:以下是本篇文章正文內容,下面案例可供參考 官網地址:https://github

    2024年02月19日
    瀏覽(42)
  • k8s中top指令使用前提:正確安裝metrics-server

    k8s中top指令使用前提:正確安裝metrics-server

    ?參考引用項目:https://www.cnblogs.com/lfl17718347843/p/14283796.html ? ? ?Kubernetes Metrics Server 是 Cluster 的核心監(jiān)控數據的聚合器,kubeadm 默認是不部署的。 ? ? ? ?確認metrics-server能否被使用的三個前提(驗證以及修改方法https://cnblogs.com/lfl17718347843/p/14283796.html): 安裝地址: 修改

    2024年01月16日
    瀏覽(27)
  • 24-k8s的附件組件-Metrics-server組件與hpa資源pod水平伸縮

    24-k8s的附件組件-Metrics-server組件與hpa資源pod水平伸縮

    ? ? ? ? Metrics-Server組件目的:獲取集群中pod、節(jié)點等負載信息; ? ? ? ? hpa資源目的:通過metrics-server獲取的pod負載信息,自動伸縮創(chuàng)建pod; 參考鏈接: 資源指標管道 | Kubernetes https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server GitHub - kubernetes-sigs/metrics-server:

    2024年02月21日
    瀏覽(26)
  • kube-state-metrics暴露k8s中的監(jiān)控指標

    kube-state-metrics 是一個用于從 Kubernetes 集群中生成各種資源對象狀態(tài)指標的工具。 通過Deployment等配置完成安裝 https://github.com/kubernetes/kube-state-metrics/tree/main/examples/standard 根據官方給定的配置添加至k8s上 注意需要RBAC授權 啟動項 要使 kube-state-metrics 暴露更多的節(jié)點和 Pod 指標,可

    2024年02月14日
    瀏覽(22)
  • jmeter壓測學習-監(jiān)聽器之服務器性能指標監(jiān)控(PerfMon Metrics Collector)

    jmeter壓測學習-監(jiān)聽器之服務器性能指標監(jiān)控(PerfMon Metrics Collector)

    1.官網下載插件的jar包 Plugins Manager下載地址:Install :: JMeter-Plugins.org 2. 將下載的jar包復制到 %JMETER_HOME%libext?目錄下 3. 啟動 JMeter -- Options -- Plugins Manager 。(如果沒將jar包放在ext目錄下是沒有該選項的) 4. Custom Thread Groups 插件 Custom Thread Groups插件包含Stepping Thread Group、Ultimate

    2024年04月15日
    瀏覽(20)
  • K8S系統(tǒng)監(jiān)控:使用Metrics Server和Prometheus

    K8S系統(tǒng)監(jiān)控:使用Metrics Server和Prometheus

    Kubernetes 也提供了類似的linux top的命令,就是 kubectl top,不過默認情況下這個命令不會生效,必須要安裝一個插件 Metrics Server 才可以。 Metrics Server 是一個專門用來收集 Kubernetes 核心資源指標(metrics)的工具,它定時從所有節(jié)點的 kubelet 里采集信息,但是對集群的整體性能影

    2024年02月16日
    瀏覽(53)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包