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

扫描二维码关注公众号,回复: 6300928 查看本文章

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服务部署和暴露对外访问。

猜你喜欢

转载自www.cnblogs.com/sunnyyangwang/p/10943788.html