java系统找不到指定文件怎么解决
237
2022-09-13
Kubernetes 服务发现 监控APIServer
监控 APIServer
APIServer 作为 Kubernetes 最核心的组件,当然他的监控也是非常有必要的,对于 APIServer 的监控我们可以直接通过 Kubernetes 的 Service 来获取:
☸ ➜ kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.96.0.1
上面这个 Service 就是我们集群的 apiserver 在集群内部的 Service 地址,要自动发现 Service 类型的服务,我们就需要用到 role 为 Endpoints 的 kubernetes_sd_configs,我们可以在 ConfigMap 对象中添加上一个 Endpoints 类型的服务的监控任务:
- job_name: "apiservers" kubernetes_sd_configs: - role: endpoints
上面这个任务是定义的一个类型为 endpoints 的 kubernetes_sd_configs ,添加到 Prometheus 的 ConfigMap 的配置文件中,然后更新配置:
☸ ➜ kubectl apply -f 隔一会儿执行reload操作☸ ➜ curl -X POST "Prometheus 的 Dashboard 的 target 页面:(因为没有办法保证所有的endpoints都有我们对应的metrics接口的,所以出现下面down的状态)
我们可以看到 apiservers 任务下面出现了很多实例,这是因为这里我们使用的是 Endpoints 类型的服务发现,所以 Prometheus 把所有的 Endpoints 服务都抓取过来了,同样的,上面我们需要的服务名为 kubernetes 这个 apiserver 的服务也在这个列表之中,那么我们应该怎样来过滤出这个服务来呢?
同样还是需要使用relabel_configs 这个配置,只是我们这里不是使用 replace 这个动作了,而是 keep,就是只把符合我们要求的给保留下来,哪些才是符合我们要求的呢?
我们要过滤的服务是 default 这个 namespace 下面,服务名为 kubernetes 的元数据,所以这里我们就可以根据对应的 __meta_kubernetes_namespace 和 __meta_kubernetes_service_name 这两个元数据来进行过滤,另外由于 kubernetes 这个服务对应的端口是 443,需要使用 协议,所以这里我们需要使用 的协议,对应的就需要将 ca 证书配置上,如下所示:
- job_name: "apiservers" kubernetes_sd_configs: - role: endpoints scheme: 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;Prometheus,切换到 Prometheus 的 Targets 路径下查看:
现在可以看到 apiserver 这个任务下面只有 apiserver 这一个实例了,现在我们切换到 Graph 路径下面查看下采集到的数据,比如查询 apiserver 的总的请求数:
这样我们就完成了对 Kubernetes APIServer 的监控。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~