Tenga en cuenta que todo es experimental y puede cambiar significativamente en cualquier momento.
Este repositorio recopila los manifiestas de Kubernetes, los paneles de Grafana y las reglas de Prometheus combinadas con documentación y scripts para proporcionar el monitoreo de clúster Kubernetes de extremo a extremo con Prometheus utilizando el operador Prometheus.
El contenido de este proyecto está escrito en JSONNET. Este proyecto podría describirse como un paquete y una biblioteca.
Componentes incluidos en este paquete:
Esta pila está destinada al monitoreo de clúster, por lo que está preconfigurado para recolectar métricas de todos los componentes de Kubernetes. Además de eso, ofrece un conjunto predeterminado de paneles y reglas de alerta. Muchos de los paneles y alertas útiles provienen del proyecto Kubernetes-Mixin, similar a este proyecto que proporciona JSONNET componible como biblioteca para que los usuarios personalicen sus necesidades.
Necesitarás un clúster de Kubernetes, ¡eso es todo! Por defecto, se supone que el kubelet utiliza autenticación y autorización de token, ya que Prometheus necesita un certificado de cliente, lo que le da acceso completo a la kubelet, en lugar de solo las métricas. La autenticación y la autorización del token permiten un grano fino y un control de acceso más fácil.
Esto significa que la configuración de Kubelet debe contener estos indicadores:
--authentication-token-webhook=true Este indicador habilita que se pueda usar un token ServiceAccount para autenticarse contra los kubelet (s). Esto también se puede habilitar configurando la authentication.webhook.enabled del valor de configuración de Kubelet.webhook.enabled a true .--authorization-mode=Webhook Este indicador habilita que el kubelet realizará una solicitud RBAC con la API para determinar si la entidad solicitante (Prometheus en este caso) puede acceder a un recurso, en específico para este proyecto, el punto final /metrics . Esto también se puede habilitar configurando la authorization.mode del valor de configuración de Kubelet.Mode a Webhook .Esta pila proporciona métricas de recursos al implementar el adaptador Prometheus. Este adaptador es un servidor de API de extensión y Kubernetes debe tener esta función habilitada, de lo contrario, el adaptador no tiene ningún efecto, pero aún se implementa.
Las siguientes versiones de Kubernetes son compatibles y funcionan mientras probamos con estas versiones en sus respectivas ramas. ¡Pero tenga en cuenta que otras versiones pueden funcionar!
| Kube-Prometheus Stack | 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 | ✔ | ✔ | ✗ | incógnita | incógnita | incógnita | incógnita | incógnita | incógnita |
release-0.12 | ✗ | ✔ | ✔ | incógnita | incógnita | incógnita | incógnita | incógnita | incógnita |
release-0.13 | ✗ | ✗ | incógnita | ✔ | ✔ | ✔ | incógnita | incógnita | incógnita |
release-0.14 | ✗ | ✗ | incógnita | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
main | ✗ | ✗ | incógnita | incógnita | ✔ | ✔ | ✔ | ✔ | ✔ |
Este proyecto está destinado a usarse como una biblioteca (es decir, la intención no es para que cree su propia copia modificada de este repositorio).
Aunque para un arranque rápido, una versión compilada de los manifiestos de Kubernetes generados con esta biblioteca (específicamente con example.jsonnet ) se verifica en este repositorio para probar el contenido rápidamente. Para probar la pila no customizada:
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/ Creamos primero el espacio de nombres y las adineraciones de OFRESOURTRESOURDEFINEDE para evitar las condiciones de carrera al implementar los componentes de monitoreo. Alternativamente, los recursos en ambas carpetas se pueden aplicar con un solo comando kubectl apply --server-side -f manifests/setup -f manifests para que todos los componentes se creen con éxito.
kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setupPara probar esta pila, comience Minikube con el siguiente comando:
$ 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.0La pila Kube-Prometheus incluye un servidor API de métricos de recursos, por lo que el complemento de métricos-servidor no es necesario. Asegúrese de que el complemento Metrics-Server esté deshabilitado en Minikube:
$ minikube addons disable metrics-serverAntes de implementar Kube-ProMetheus en un entorno de producción, lea:
docs/ Directorio. Para contribuir a Kube-ProMetheus, consulte la contribución.
Si tiene alguna pregunta o retroalimentación sobre Kube-Prometheus, únase a la discusión de Kube-Prometheus. Alternativamente, considere unirse al canal Kubernetes Slack #Prometheus-Operator o el horario de oficina de contribuyentes quincenal del Proyecto.
Licencia de Apache 2.0, ver licencia.