请注意,一切都是实验性的,并且可能随时发生重大变化。
该存储库收集Kubernetes表现出,Grafana仪表板和Prometheus规则,并结合文档和脚本,以使用Prometheus使用Prometheus使用Prometheus使用Prometheus提供易于操作的端到端Kubernetes群集监视。
该项目的内容用JSONNET编写。这个项目都可以描述为包装和库。
此软件包中包含的组件:
该堆栈是用于群集监视的,因此已对其进行预先配置以从所有Kubernetes组件中收集指标。除此之外,它还提供一组默认的仪表板和警报规则。许多有用的仪表板和警报来自Kubernetes-Mixin项目,与此项目类似,它提供了可组合的JSONNET作为库,供用户自定义其需求。
您将需要一个Kubernetes群集,仅此而已!默认情况下,假定Kubelet使用令牌身份验证和授权,因为Prometheus需要客户证书,这使其可以完全访问Kubelet,而不仅仅是指标。令牌身份验证和授权允许更多细粒度和更轻松的访问控制。
这意味着Kubelet配置必须包含以下标志:
--authentication-token-webhook=true此标志可以使ServiceAccount令牌可用于对kubelet(S)进行身份验证。也可以通过设置kubelet配置值true authentication.webhook.enabled来启用这一点。--authorization-mode=Webhook此标志使kubelet将对API执行RBAC请求,以确定请求实体(在这种情况下为Prometheus)是否允许访问资源,特定于此项目/metrics端点。也可以通过将kubelet配置值authorization.mode设置为Webhook来启用这一点。该堆栈通过部署Prometheus适配器来提供资源指标。该适配器是一个扩展API服务器,需要启用此功能,否则适配器没有效果,但仍在部署。
支持以下Kubernetes版本并在我们在各自分支中对这些版本进行测试时起作用。但是请注意,其他版本可能会起作用!
| Kube-prometheus堆栈 | Kubernetes 1.23 | Kubernetes 1.24 | Kubernetes 1.25 | Kubernetes 1.26 | Kubernetes 1.27 | Kubernetes 1.28 | Kubernetes 1.29 | Kubernetes 1.30 | Kubernetes 1.31 |
|---|---|---|---|---|---|---|---|---|---|
release-0.11 | ✔ | ✔ | ✗ | x | x | x | x | x | x |
release-0.12 | ✗ | ✔ | ✔ | x | x | x | x | x | x |
release-0.13 | ✗ | ✗ | x | ✔ | ✔ | ✔ | x | x | x |
release-0.14 | ✗ | ✗ | x | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
main | ✗ | ✗ | x | x | ✔ | ✔ | ✔ | ✔ | ✔ |
该项目旨在用作库(即,意图不是让您创建自己的修改后的此存储库副本)。
尽管对于QuickStart,将本库中生成的Kubernetes的编译版本(特别是example.jsonnet )被检查到此存储库中,以便快速尝试该内容。尝试堆栈不定制运行:
manifests目录中的配置创建监视堆栈: # Create the namespace and CRDs, and then wait for them to be available before creating the remaining resources
# Note that due to some CRD size we are using kubectl server-side apply feature which is generally available since kubernetes 1.22.
# If you are using previous kubernetes versions this feature may not be available and you would need to use kubectl create instead.
kubectl apply --server-side -f manifests/setup
kubectl wait
--for condition=Established
--all CustomResourceDefinition
--namespace=monitoring
kubectl apply -f manifests/我们首先创建命名空间和CustomResourceRcEFinitions,以避免在部署监视组件时避免比赛条件。另外,两个文件夹中的资源都可以使用单个命令kubectl apply --server-side -f manifests/setup -f manifests ,但是可能有必要多次运行命令以成功创建所有组件。
kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup要尝试此堆栈,请使用以下命令启动Minikube:
$ minikube delete && minikube start --kubernetes-version=v1.23.0 --memory=6g --bootstrapper=kubeadm --extra-config=kubelet.authentication-token-webhook=true --extra-config=kubelet.authorization-mode=Webhook --extra-config=scheduler.bind-address=0.0.0.0 --extra-config=controller-manager.bind-address=0.0.0.0Kube-prometheus堆栈包含资源指标API服务器,因此Metrics-Server-server addon不需要。确保在Minikube上禁用指标服务器插件:
$ minikube addons disable metrics-server在生产环境中部署kube-prometheus之前,请阅读:
docs/目录。 为了为kube-prometheus做出贡献,请参阅贡献。
如果您对Kube-Prometheus有任何疑问或反馈,请参加Kube-Prometheus讨论。另外,请考虑加入Kubernetes Slack#Prometheus-operator频道或Project每两周的贡献者办公时间。
Apache许可证2.0,请参阅许可证。