核心操作系统项目kube-prometheus和prometheus运算符有什么区别?

时间:2019-01-29 13:49:08

标签: kubernetes prometheus-operator

Prometheus Operator https://github.com/coreos/prometheus-operator/项目的github回购说

  

Prometheus Operator使Prometheus配置Kubernetes成为本机,并管理和操作Prometheus和Alertmanager集群。关于完整的端到端监控,这是一个难题。

     

kube-prometheus结合了Prometheus Operator和一系列清单,以帮助开始监视Kubernetes本身和在其之上运行的应用程序。

有人可以详细说明吗?

3 个答案:

答案 0 :(得分:2)

Kubernetes operator是kubernetes特定的应用程序(pod),可自动配置,管理和优化其他Kubernetes部署。它们被实现为自定义控制器。

根据coreOS官方网站:

  

CoreOS将操作员引入为一类可以操作其他软件的软件,将人类收集的操作知识转化为软件。

prometheus运算符提供了在kubernetes集群上部署配置和监视prometheus实例的简便方法。为此,prometheus运算符在kubernetes中引入了三种类型的自定义资源定义(CRD)。

  1. 普罗米修斯
  2. 警报经理
  3. ServiceMonitor

现在,在上述CRD的帮助下,您可以通过提供kind: Prometheus直接创建一个prometheus实例,并且该prometheus实例已准备好服务,同样,您可以为AlertManager做。否则,您将不得不使用其映像,配置和更多内容来设置普罗米修斯的部署。

  

Prometheus Operator可以使在Kubernetes上运行Prometheus尽可能简单,同时保留Kubernetes本地配置选项。

现在,kube-prometheus实现了prometheus运算符,并通过运行单个命令为您提供了最小的Yaml文件,以创建prometheusalertmanagergrafana的基本设置。

git clone https://github.com/coreos/prometheus-operator.git
kubectl apply -f prometheus-operator/contrib/kube-prometheus/manifests/

通过在kube-prometheus目录中运行以上命令,您将获得monitoring命名空间,该命名空间将具有Alertmanager,UI的prometheusgrafana实例。这对于大多数基本实现来说已经足够了,如果您根据应用需要更多特定信息,则可以添加所需的更多Yaml导出程序。

Kube-prometheus对prometheus-operator项目的贡献更大,该项目很好地实现了prometheus操作员功能,并为您的kubernetes集群提供了完整的监视设置。您可以从kube-prometheus开始,然后从此处根据您的应用程序扩展监视设置的功能。

您可以了解有关prometheus-operator here

的更多信息

答案 1 :(得分:2)

我一直都有相同的问题/反复碰到两个问题,但是阅读上面的答案并没有为我澄清,我需要简短的解释。我发现这个github问题使我很清楚。 https://github.com/coreos/prometheus-operator/issues/2619

引用GitHub的nicgirault:

  

最后,我意识到普罗米修斯-操作员图表正在打包   kube-prometheus堆栈,但是我花了大约10个小时来玩   意识到这一点。

这是我的简要说明:
“ kube-prometheus”和“ Prometheus Operator Helm Chart”都做同样的事情:
1.基本上,入口/入口控制器概念适用于度量/ Prometheus运算符。
2.两者都是在Kubernetes上轻松配置,安装和管理大型分布式应用程序(Kubernetes Prometheus Stack)的一种方式:


您要问的整个Kube Prometheus堆栈是什么?
Prometheus,Grafana,AlertManager,CRD(自定义资源定义),Prometheus Operator(软件bot应用程序),IaC警报规则, IaC Grafana仪表板,IaC ServiceMonitor CRD(可自动生成Prometheus Metric集合配置并将其自动热导入Prometheus Server)
(另外,当我说轻松配置时,我的意思是人类易于理解的1,000-10,000 ++行配置会生成并自动管理10,000-100,000行的机器配置+具有合理默认值的内容+监视配置自助服务,通过操作员/控制器进行分布式配置分片,以结合配置并从易于理解的配置中生成冗长的样板机器可读配置。

如果他们达到相同的最终目标,您可能会问他们之间有什么区别?
https://github.com/coreos/kube-prometheus
https://github.com/helm/charts/tree/master/stable/prometheus-operator
基本上,CoreOS的kube-prometheus使用Ksonnet部署Prometheus Stack,而btw现在内置在kubectl中。
Prometheus运算符Helm Chart封装了kube-prometheus /,但是使用Helm可以达到相同的最终结果。

那要用哪个呢?
没关系+他们获得相同的最终结果+从1开始并切换到另一个不应该太疯狂了。

掌舵人倾向于更快地学习/发展其基本知识。

Ksonnet很难学习/发展其基本知识,但是:
 -幂等(对于CICD自动化来说更好)(但仅99%幂和99.99%幂相差。)
 -具有内置模板,这意味着如果您有多个集群,则需要管理/您希望始终保持一致。然后,您可以利用ksonnet的模板,使用具有大量代码重用的DRY代码库来管理Kube Prometheus Stack的多个实例(针对多个环境)。 (如果您只有几个env,并且Prometheus不需要经常更改,那么手动保持4个helm值文件同步并不是完全不合理的。我还看到Jinja2模板用于将helm值文件模板化,但是如果您麻烦您也可以考虑使用kso​​nnet。)

答案 2 :(得分:0)

截至今天(2020年9月28日),这是在Kubernetes集群中安装Prometheus的方法 https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#kube-prometheus-stack