监控集群状态
在Kubernetes集群中命名空间default中会包含一个名为kubernetes的默认Service:
该Service实际指向的是Kubernetes组件apiserver提供的服务:
Apiserver组件内置了对Prometheus的支持,因此只要通过CA证书和令牌访问https://kubernetes.default.svc:443/metrics即可获取apiserver组件中记录的所有监控样数据。
这里我们添加了一个新的监控采集任务kubernetes-apiservers,该任务基于endpoints模式获取当前集群中的所有endpoints,并且只保留default命名空间下的服务名称为kubernetes的实例作为监控对象。 由于基于ServiceAccount提供的CA证书中,并不包含Endpoint的地址,因此这里还需要将默认的替换为集群内的DNS地址kubernetes.default.svc。
基于以上服务发现以及relabel的过程后,Prometheus就能够正常的从apiserver中过去监控样本数据:
评估Kubernetes性能
例如,通过以下PromQL获取当前集群99%的Pod启动时间大致在18.40s以内:
Pod平均启动时间大致为42s左右(包含镜像下载时间):
其次,对于用户而言,他们更关注通过容器启动服务所需的时间,因此,第二个关键指标即Pod的启动时间。指标apiserver_request_latencies_summary和apiserver_request_latencies_bucket均可用于统计以下各种类型API响应时间的分布情况: