k8s監控之kube-state-metrics


容器監控之kube-state-metrics

參考:https://github.com/kubernetes/kube-state-metrics/tree/master/kubernetes

          https://www.kubernetes.org.cn/5435.html

 

理論基礎

metric-server(或heapster)是從api-server中獲取cpu、內存使用率這種監控指標,並把他們發送給存儲后端,如influxdb或雲廠商,他當前的核心作用是:為HPA等組件提供決策指標支持。

 kube-state-metrics關注於獲取k8s各種資源的最新狀態,如deployment或者daemonset,之所以沒有把kube-state-metrics納入到metric-server的能力中,是因為他們的關注點本質上是不一樣的。metric-server僅僅是獲取、格式化現有數據,寫入特定的存儲,實質上是一個監控系統。而kube-state-metrics是將k8s的運行狀況在內存中做了個快照,並且獲取新的指標,但他沒有能力導出這些指標。

 

可以監控的指標

不能精確到每一個pod狀態和客戶端。

kube_configmap_info

kube_daemonset_

kube_deployment

kube_endpoint

kube_ingress

kube_namespace

kube_node

kube_pod_info

….

默認注釋的監控項。

kube_persistent

kube_hpa

kube_poddisruption

 

 安裝部署

[root@mer kube-state-metrics]# for file in kube-state-metrics-service.yaml kube-state-metrics-cluster-role-binding.yaml kube-state-metrics-cluster-role.yaml kube-state-metrics-deployment.yaml kube-state-metrics-service-account.yaml;do wget https://raw.githubusercontent.com/kubernetes/kube-state-metrics/master/kubernetes/$file;done

 

[root@master kube-state-metrics]# kubectl  apply -f ./

[root@master ~]# kubectl get pods -n kube-system|grep metric

kube-state-metrics-74f9f4ddb9-kzdbj      1/1     Running   0          19m

metrics-server-v0.3.3-6448dcfb78-rrhd8   2/2     Running   2          20h

[root@master ~]# kubectl get svc -n kube-system|grep metric      

kube-state-metrics    ClusterIP  10.103.111.189   <none>      8080/TCP,8081/TCP   20m

metrics-server     ClusterIP   10.108.249.201   <none>       443/TCP             20h

[root@master ~]#

容器內部訪問正常展示。

 

[root@master ~]#

需要通過ingress服務將其暴露出去。

  

訪問正常,瀏覽器配置hosts文件,均正常。

 

相關命令匯總。

[root@master ~]# kubectl get svc -n kube-system                          

NAME        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)             AGE

kube-state-metrics   ClusterIP   10.103.111.189   <none>    8080/TCP,8081/TCP   101m

[root@master ~]# kubectl get ing -n kube-system

NAME                 HOSTS                ADDRESS   PORTS   AGE

ingress-kube-state   metrics.kube.state             80      25m

[root@master ~]# kubectl describe ing/ingress-kube-state -n kube-system  

Name:             ingress-kube-state

Namespace:        kube-system

Address:         

Default backend:  default-http-backend:80 (<none>)

 

默認是Clusterip方式部署,通過ingress暴露服務。

[root@master ~]# cat ingress_kube-state.yaml

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

  name: ingress-kube-state

  namespace: kube-system

spec:

  rules:

  - host: metrics.kube.state

    http:

      paths:

      - path: /

        backend:

          serviceName: kube-state-metrics

          servicePort: 8080

 

配置granfa組件,查看。

 

自此完成了容器監控kube-state-metrics服務部署和暴露對外訪問。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM