apiserver作为Kubernetes最核心的组件,它的监控也是非常有必要的,对于apiserver的监控,我们可以直接通过kubernetes的service来获取
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d5h
集成方式
Kubernetes主要提供了如下5种集成方式和Prometheus进行集成:
- Node
- Pod
- Endpoints
- Service
- Ingress
上面的service是我们集群的apiserver内部的service的地址,要自动发现service类型的服务,需要使用role为Endpoints的kubernetes_sd_configs (自动发现),我们只需要在configmap里面在添加Endpoints类型的服务发现.
- job_name: 'kubernetes-apiserver'
kubernetes_sd_configs:
- role: endpoints
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: default;kubernetes;https
监控方法
监控对象 | 监控指标内容 | 服务发现模式 | 监控方式 | 数据来源 |
API Server组件的访问地址 | 获取的Kubernetes集群相关的运行监控指标 | endpoints | 白盒监控 | ApiServer |
参数解释
action: keep #保留哪些标签
regex: default;kubernetes;https #匹配namespace下的default命名空间下的kubernetes service
https协议 可以通过kubectl describe svc kubernetes查看到
注:修改prometheus-cfg.yaml文件生效步骤
kubectl apply -f prometheus-cfg.yaml
kubectl delete -f prometheus-deploy.yaml
kubectl apply -f prometheus-deploy.yaml
prometheus监控apiserver指标可以参考一下文档
官网:https://github.com/signalfx/integrations/blob/master/signalfx-agent/agent_docs/monitors/kubernetes-apiserver.md
Apiserver组件是k8s集群的入口,所有请求都是从apiserver进来的,所以对apiserver指标做监控可以用来判断集群的健康状况
参考:https://www.jianshu.com/p/02917b280ebe