1.容器健康检查
K8s服务健康检查从两个维度进行,分别为就绪状态检查(readiness)和存活状态检查(liveness),支持进行三种类型的探测:HTTP、Command和TCP。
Readiness探针旨在让K8s知道用户的应用何时准备好流量服务。K8s确保Readiness探针检测通过,然后允许服务将流量发送到Pod。如果Readiness探针开始失败,K8s将停止向该容器发送流量,直到它通过。
Liveness探针让K8s知道用户的应用程序是活着还是死了。如果应用程序还活着,那么K8s就不用管了。如果应用程序已经死了,K8s将删除Pod并启动一个新的应用程序。
2.容器监控
人们习惯于在两个层次监控:应用以及运行它们的主机。现在由于容器处在中间层,以及K8s本身也需要监控,因此有4个不同的组件需要监控并且搜集度量信息。
1)Cadvisor+InfluxDB+Grafana
一个简单的跨多主机的监控系统Cadvisor,将数据写入InfluxDB,InfluxDB是时序数据库提供数据的存储,存储在指定的目录下;而Grafana提供了Web控制台,自定义查询指标,从InfluxDB查询数据并展示。
2)Heapster+InfluxDB+Grafana(www.xing528.com)
Heapster是一个收集者,将每个Node上的Cadvisor的数据进行汇总,然后导到Influx-DB,支持从Cluster、Node、Pod的各个层面提供详细的资源使用情况。
Heapster:在K8s集群中获取Metrics和事件数据,写入InfluxDB。Heapster收集的数据比CacAdvisor多,而且存储在InfluxDB的也少。
InfluxDB:时序数据库,提供数据的存储,存储在指定的目录下。
Grafana:提供了Web控制台,自定义查询指标,从InfluxDB查询数据,并展示。
3)Prometheus+Grafana
Prometheus是个集DB、Graph、Statistics、Alert于一体的监控工具。提供多维数据模型(时序列数据由Metric名和一组key/value组成)和在多维度上灵活的查询语言(PromQl),提供了很高的写入和查询性能。对内存占用量大,不依赖分布式存储,单主节点工作,所以不具有高可用性,支持pull/push两种时序数据采集方式。
考虑到Prometheus在扩展性和高可用方面的缺点,在超大规模应用时可以考察下Thanos这样的面向解决Prometheus的长时间数据存储与服务高可用解决方案的开源项目:https://github.com/improbable-eng/thanos。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。