57 K8S 之自动弹性缩放
Helm Hub 中主要提供了 3 种风格的 Prometheus 监控系统的部署方式。
一是直接部署 Prometheus 监控系统,借助 stable/prometheus 和 stale/grafana 协同完成该任务。
二是部署 Prometheus Operator,而后由该 Operator 编排运行多个独立的 Prometheus 监控系统,stable/prometheus-operator 和 bitnami/preometheus-operator 都能分别实现该功能。
三是借助 Thanos 部署高可用的 Prometheus Server 和 Alertmanager 组件,再联合其他必要组件构建一个完整的监控系统。
Prometheus 内置的 HTTP Server 还通过/metrics 暴露 Prometheus Server 程序自身内置指标,PrometheusServer 默认的配置文件也会抓取自身的这些指标,实现自我监控。
k8s-prometheus-adapter 适配器通过规则来定义公开哪些指标以及指标数据的生成的方式,各规则彼此间各自独立执行,因而它们必须存在互斥关系。每个规则可由发现机制、关联方式、指标命名和查询语句 4 个部分组成。
1)发现机制:定义适配器如何从 Prometheus 中为当前规则查找待暴露的指标,使用 seriesQuery 来指定传递给 Prometheus 的查询条件,且能够使用 seriesFilters 进一步缩小指标范围。
2)关联方式:定义上面发现机制中指定的指标可以附加到 Kubernetes 的哪些资源上,即暴露哪些资源的指定指标。关联方式使用 resources 字段进行定义,支持两种格式:一种是嵌套使用 template 字段以 Go 模板的形式限定目标资源,使用 Group 代表资源群组,使用 Resouce 代表资源类型;另一种是嵌套使用 overrides 字段将特定的资源标签转为 Kubernetes 资源类型。
3)指标命名:定义如何将 Prometheus 的指标名称转换为所需的自定义指标名称,它由 name 字段进行定义,并嵌套使用 match 字段选定要转换的指标(默认为“.*”),使用 as 字段指定要使用的名称,支持正则表达式的分组引用机制,例如{0}等。
4)查询语句:定义具体发往 PromQL 的查询语句,在 metricsQuery 字段以 Go 模板格式进行定义,并在具体执行时基于目标对象的信息进行模板渲染后转为具体 PromQL 语句。
Kubernetes 提供了多种自动弹性缩放工具。
1)HPA:一种支持控制器对象下 Pod 规模弹性缩放的工具,如图 15-15 所示。目前,HPA 有两个版本的实现:HPAv1 和 HPAv2,HPAv1 仅支持把 CPU 指标数据作为评估基准,而新版本能够使用资源指标 API、自定义指标 API 和外部指标 API 中的指标。
2)CA:全称 Cluster Autoscaler,是集群规模自动弹性缩放工具,能自动增减 GCP、AWS 或 Azure 集群上部署的 Kubernetes 集群节点数量,GA 版本自 Kubernetes v1.8 起可用。
3)VPA:是 Pod 应用垂直缩放工具,它通过调整 Pod 对象的 CPU 和内存资源需求量完成扩展或收缩。
4)AR:全称 Addon Resizer,是一个简化版本的 Pod 应用垂直缩放工具,它基于集群中的节点数量来调整附加组件的资源需求量。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/96f78be814f0e3c0281dc1336】。文章转载请联系作者。
评论