Обратите внимание, что все экспериментально и может значительно измениться в любое время.
Этот репозиторий собирает Kubernetes Manifests, Grafana Dashboards и Prometheus в сочетании с документацией и сценариями, чтобы обеспечить проще в управлении сквозным мониторингом кластера Kubernetes с Prometheus с использованием оператора Prometheus.
Содержание этого проекта написано в JSonnet. Этот проект можно описать как пакет, так и библиотека.
Компоненты включены в этот пакет:
Этот стек предназначен для мониторинга кластера, поэтому он предварительно настроен собирать метрики от всех компонентов Kubernetes. В дополнение к этому он обеспечивает набор мониторинга и оповещения по умолчанию. Многие из полезных мониторинга и оповещений поступают из проекта Kubernetes-Mixin, аналогично этому проекту, который он предоставляет Composable JSONNet в качестве библиотеки для пользователей, чтобы настроить их потребности.
Вам понадобится кластер Kubernetes, вот и все! По умолчанию предполагается, что Kubelet использует аутентификацию и авторизацию токенов, поскольку иным образом Прометею нуждается в сертификате клиента, что дает ему полный доступ к кубелету, а не только для метрик. Аутентификация и авторизация токена обеспечивает более мелкозернистый и легкий контроль доступа.
Это означает, что конфигурация Kubelet должна содержать эти флаги:
--authentication-token-webhook=true Этот флаг включает, что токен ServiceAccount может использоваться для аутентификации против кубелета (ы). Это также может быть включено, установив authentication.webhook.enabled значения конфигурации Kubelet.webhook.enabled to true .--authorization-mode=Webhook Этот флаг включает, что Kubelet выполнит запрос RBAC с API, чтобы определить, разрешается ли запрашивающая организация (Prometheus в данном случае) доступ к ресурсу, конкретно для этого проекта конечной точки /metrics . Это также может быть включено, установив authorization.mode значения конфигурации Kubelet.mode в Webhook .Этот стек предоставляет метрики ресурсов путем развертывания адаптера Prometheus. Этот адаптер является сервером API расширения, и Kubernetes должен быть включен эта функция, в противном случае адаптер не имеет никакого эффекта, но все еще развернут.
Следующие версии 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 | ✔ | ✔ | ✗ | х | х | х | х | х | х |
release-0.12 | ✗ | ✔ | ✔ | х | х | х | х | х | х |
release-0.13 | ✗ | ✗ | х | ✔ | ✔ | ✔ | х | х | х |
release-0.14 | ✗ | ✗ | х | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
main | ✗ | ✗ | х | х | ✔ | ✔ | ✔ | ✔ | ✔ |
Этот проект предназначен для использования в качестве библиотеки (то есть намерение не для вас создать собственную модифицированную копию этого репозитория).
Хотя для QuickStart скомпилированная версия Kubernetes Manifests, сгенерированные с этой библиотекой (в частности с 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/ Сначала мы создаем пространство имен и CustomResourCedEfinitions, чтобы избежать условий гонки при развертывании компонентов мониторинга. В качестве альтернативы, ресурсы в обеих папках могут быть применены с помощью одной команды 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.0Стек Kube-Prometheus включает в себя сервер API-сервера ресурсов, поэтому аддон с сервером метрик не требуется. Убедитесь, что адденс-сервер показателей отключена на Minikube:
$ minikube addons disable metrics-serverПеред развертыванием Kube-Prometheus в производственной среде прочитайте:
docs/ каталог. Чтобы внести свой вклад в Kube-Prometheus, обратитесь к участию.
Если у вас есть какие-либо вопросы или отзывы относительно Kube-Prometheus, присоединяйтесь к обсуждению Kube-Prometheus. В качестве альтернативы рассмотрите возможность присоединиться к каналу Kubernetes Slack #Prometheus-Operator или в двухнедельном рабочем рабочем месте.
Apache License 2.0, см. Лицензию.