Kubernetes 中的容器监控¶
可以与 magnum 部署的当前监控能力涵盖不同的组件。这些组件包括:
metrics-server: 负责处理 API metrics.k8s.io 请求。这包括在使用简单 HPA 指标或使用 kubectl top 命令时最基本的功能。
prometheus: 是一项功能完善的服务,允许用户访问高级指标功能。这些指标以 30 秒的分辨率收集,包括 CPU、内存、磁盘和网络 IO 等资源,以及 R/W 速率。这些细粒度指标在您的集群中最多可保留 14 天(默认)。
prometheus-adapter: 是一个额外的组件,它与 prometheus 服务集成,并允许用户创建更复杂的 HPA 规则。该服务与 metrics.k8s.io API 完全集成,但目前仅主动使用 custom.metrics.k8s.io。
这些服务的安装由以下标签控制
- metrics_server_enabled
metrics_server_enabled 用于启用或禁用 metrics server 的安装。Train 默认值:true Stein 默认值:true
- monitoring_enabled
启用由 stable/prometheus-operator helm chart 提供的集群监控解决方案的安装。默认值:false
- prometheus_adapter_enabled
启用由 stable/prometheus-adapter helm chart 提供的集群自定义指标的安装。该服务依赖于 monitoring_enabled。默认值:true
要控制部署的版本,可以使用额外的标签
- metrics_server_chart_tag
添加 metrics_server_chart_tag 以选择要安装的 stable/metrics-server chart 的版本。Ussuri 默认值:v2.8.8 Yoga 默认值:v3.7.0
- prometheus_operator_chart_tag
添加 prometheus_operator_chart_tag 以选择要安装的 stable/prometheus-operator chart 的版本。在安装 chart 时,helm 将使用标签定义的默认值,并根据当前定义的 prometheus-operator-config ConfigMap 覆盖它们。您必须确认这些版本兼容。
- prometheus_adapter_chart_tag
要使用的 stable/prometheus-adapter helm chart 版本。Train 默认值:1.4.0
功能完善的集群监控¶
带有 monitoring_enabled 标签提供的 prometheus 安装实际上是一项多组件服务。此安装由 prometheus-operator helm chart 管理,其组成组件包括:
prometheus(数据收集、存储和搜索)
node-exporter(kubelet/节点的datasource)
kube-state-metrics(运行的 kubernetes 对象的 datasource {deployments, pods, nodes 等})
alertmanager(警报聚合、处理和分发)
grafana(指标可视化)
这些组件以一种通用的方式安装,使得运行集群范围的监控基础设施变得容易,无需任何努力。
警告
现有的监控基础设施不会考虑 nodegroups 的存在。如果您计划在集群中使用 nodegroups,可以考虑总节点数,并使用 max_node_count 正确设置 prometheus 服务器。
注意
在创建集群之前,请考虑集群的规模。这很重要,因为 Prometheus 服务器 pod 可能不适合您的节点。如果您正在使用 Cluster Autoscaling,这一点尤其重要,因为 Prometheus 服务器将安排资源以满足集群可以扩展到的最大节点数,该节点数由标签(如果存在)max_node_count 定义。
Prometheus 服务器将消耗以下资源
RAM:: 256 (base) + Nodes * 40 [MB]
CPU:: 128 (base) + Nodes * 7 [mCPU]
Disk:: 15 GB for 2 weeks (depends on usage)
调整参数¶
现有的设置配置允许您根据需求调整指标基础设施。以下是可用于特定情况的标签列表
- grafana_admin_passwd
此标签允许用户为 Grafana 界面创建自己的 admin 用户密码。它需要一个字符串值。默认值:admin
- monitoring_retention_days
此标签允许用户指定 prometheus 服务器中收集的数据的最大保留时间(天)。默认值:14
- monitoring_interval_seconds
此标签允许用户指定指标采样之间的时间间隔(秒)。默认值:30
- monitoring_retention_size
此标签允许用户指定 prometheus 服务器存储的数据的最大大小(以 GB 为单位)。此标签必须与 monitoring_storage_class_name 一起使用。默认值:14
- monitoring_storage_class_name
用于 prometheus pvc 的 kubernetes 存储类名称。使用此标签将激活 pvc 的使用,而不是本地磁盘空间。使用 monitoring_storage_class_name 时,将创建 2 个 pvc。一个用于 prometheus 服务器,其大小由 monitoring_retention_size 设置,另一个用于 grafana,固定为 1Gi。默认值: “”
- monitoring_ingress_enabled
此标签设置所有底层服务,使其可以通过“按路径路由”方式访问。这意味着这些服务将作为
my.domain.com/alertmanager my.domain.com/prometheus my.domain.com/grafana
此标签必须与 cluster_root_domain_name 一起使用。默认值:false
- cluster_root_domain_name
用于集群自动设置应用程序的根域名。默认值:“localhost”
- cluster_basic_auth_secret
用于代理基本身份验证用户名和密码的 kubernetes secret,用于未受保护的服务 {alertmanager,prometheus}。仅当指定此文件时才设置基本身份验证。secret 必须位于与使用的代理(kube-system)相同的命名空间中。默认值: “”
To create this secret you can do: $ htpasswd -c auth foo $ kubectl create secret generic basic-auth --from-file=auth
- prometheus_adapter_configmap
要使用的 prometheus-adapter 规则 ConfigMap 的名称。使用此标签将覆盖默认规则。默认值: “”