The vessel monitoring kube-state-metrics
Reference: https://github.com/kubernetes/kube-state-metrics/tree/master/kubernetes
https://www.kubernetes.org.cn/5435.html
Theoretical basis
metric-server (or heapster) is obtained from the api-server cpu, memory usage such monitoring indicators, and send them to the back-end storage, such as influxdb or cloud vendors, he is currently the central role is: to HPA and other components indicators to provide decision support.
kube-state-metrics focus on the acquisition date k8s various resources, such as deployment or daemonset, there is no reason why the kube-state-metrics into the ability of metric-server, because they are not the same focus on nature of. metric-server is only acquired, the data is formatted prior written particular storage, it is essentially a monitoring system. The kube-state-metrics is the health k8s made a snapshot in memory, and acquire new targets, but he did not have the ability to export these indicators.
Indicators that can be monitored
Each pod is not accurate to state and client.
kube_configmap_info
kube_daemonset_
kube_deployment
kube_endpoint
kube_ingress
kube_namespace
kube_node
kube_pod_info
….
The default monitored item comments.
kube_persistent
kube_hpa
kube_poddisruption
Installation and deployment
[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 ~]#
Container internal access normal display.
[root@master ~]#
It needs to be exposed to ingress through the service.
Normal visit, the browser is configured hosts file, were normal.
Related Command Summary.
[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服务部署和暴露对外访问。