Updated README

This commit is contained in:
CarlosEDP 2019-02-05 17:41:01 -02:00
parent cb0c14feed
commit 8f3d7c448d

View File

@ -1,32 +1,66 @@
# Prometheus Operator for ARM platform # Prometheus Operator for ARM / X86-64 platforms
The Prometheus Operator for Kubernetes provides easy monitoring definitions for Kubernetes services and deployment and management of Prometheus instances. The Prometheus Operator for Kubernetes provides easy monitoring definitions for Kubernetes services and deployment and management of Prometheus instances.
This project aims on porting the [official manifests](https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus) and images to the ARM platform. This have been tested on a ARM64 Kubernetes cluster deployed as [this article](https://medium.com/@carlosedp/building-an-arm-kubernetes-cluster-ef31032636f9). This have been tested on a hybrid ARM64 / X84-64 Kubernetes cluster deployed as [this article](https://medium.com/@carlosedp/building-a-hybrid-x86-64-and-arm-kubernetes-cluster-e7f94ff6e51d).
## Changes to Kubeadm for Prometheus Operator This repository collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator.
According to the official deployment documentation [here](https://github.com/coreos/prometheus-operator/blob/master/contrib/kube-prometheus/docs/kube-prometheus-on-kubeadm.md), a couple of changes on the cluster are required: The content of this project is written in jsonnet and is an extension of the fantastic [kube-prometheus](https://github.com/coreos/prometheus-operator/blob/master/contrib/kube-prometheus) project.
We need to expose the cadvisor that is installed and managed by the kubelet daemon and allow webhook token authentication. To do so, we do the following on **all the masters and nodes**: Components included in this package:
```bash * The Prometheus Operator
# Enable cadvisor port * Highly available Prometheus
sudo sed -e "/cadvisor-port=0/d" -i /etc/systemd/system/kubelet.service.d/10-kubeadm.conf * Highly available Alertmanager
* Prometheus node-exporter
* ARM_exporter to generate temperature metrics
* MetalLB metrics
* Traefik metrics
* kube-state-metrics
* Grafana
# Enable Webhook authorization ## Quickstart
sudo perl -pi -e "s/(?:--authentication-token-webhook=true )*--authorization-mode=Webhook/--authentication-token-webhook=true --authorization-mode=Webhook/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
sudo systemctl daemon-reload The repository already provides a set of compiled manifests to be applied into the cluster. The deployment can be customized thru the jsonnet files.
sudo systemctl restart kubelet
To simply deploy the stack, run:
```
$ kubectl apply -f manifests/
# It can take a few seconds for the above 'create manifests' command to fully create the following resources, so verify the resources are ready before proceeding.
$ until kubectl get customresourcedefinitions servicemonitors.monitoring.coreos.com ; do date; sleep 1; echo ""; done
$ until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
$ kubectl apply -f manifests/ # This command sometimes may need to be done twice (to workaround a race condition).
``` ```
In case you already have a Kubernetes deployed with kubeadm, change the address kube-controller-manager and kube-scheduler listens **on master node** in addition to previous kubelet change: ## Customizing
```bash The content of this project consists of a set of jsonnet files making up a library to be consumed.
# Make kube-controller ad kube-scheduler listen on all addresses
sudo sed -e "s/- --address=127.0.0.1/- --address=0.0.0.0/" -i /etc/kubernetes/manifests/kube-controller-manager.yaml ### Pre-reqs
sudo sed -e "s/- --address=127.0.0.1/- --address=0.0.0.0/" -i /etc/kubernetes/manifests/kube-scheduler.yaml
The project requires json-bundler and the jsonnet compiler. The Makefile does the heavy-lifting of installing:
```
git clone https://github.com/carlosedp/prometheus-operator-ARM
cd prometheus-operator-ARM
make vendor
# Change the jsonnet files...
make
```
After this, a new customized set of manifests is built into the `manifests` dir. To apply to your cluster, run:
```
make deploy
```
To uninstall, run:
```
make teardown
``` ```
## Images ## Images
@ -60,11 +94,17 @@ This project depends on the following images:
* Autobuild: No autobuild yet. Use provided `build_images.sh` script. * Autobuild: No autobuild yet. Use provided `build_images.sh` script.
* Images: https://hub.docker.com/r/carlosedp/prometheus-operator * Images: https://hub.docker.com/r/carlosedp/prometheus-operator
**Prometheus-adapter**
* Source: https://github.com/DirectXMan12/k8s-prometheus-adapter
* Autobuild: No autobuild yet. Use provided `build_images.sh` script.
* Images: https://hub.docker.com/r/carlosedp/k8s-prometheus-adapter
**Grafana** **Grafana**
* Source: https://github.com/carlosedp/grafana-ARM * Source: https://github.com/carlosedp/grafana-ARM
* Autobuild: https://travis-ci.org/carlosedp/grafana-ARM * Autobuild: https://travis-ci.org/carlosedp/grafana-ARM
* Images: https://hub.docker.com/r/carlosedp/monitoring-grafana/ * Images: https://hub.docker.com/r/grafana/grafana/
**Kube-state-metrics** **Kube-state-metrics**
@ -74,7 +114,7 @@ This project depends on the following images:
**Addon-resizer** **Addon-resizer**
* Source: * Source: https://github.com/kubernetes/autoscaler/tree/master/addon-resizer
* Autobuild: No autobuild yet. Use provided `build_images.sh` script. * Autobuild: No autobuild yet. Use provided `build_images.sh` script.
* Images: https://hub.docker.com/r/carlosedp/addon-resizer * Images: https://hub.docker.com/r/carlosedp/addon-resizer
@ -97,3 +137,9 @@ This project depends on the following images:
Source: https://github.com/carlosedp/docker-smtp Source: https://github.com/carlosedp/docker-smtp
Autobuild: https://travis-ci.org/carlosedp/docker-smtp Autobuild: https://travis-ci.org/carlosedp/docker-smtp
Images: https://hub.docker.com/r/carlosedp/docker-smtp Images: https://hub.docker.com/r/carlosedp/docker-smtp
**Kube-rbac-proxy**
Source: https://github.com/brancz/kube-rbac-proxy
Autobuild: No autobuild yet. Use provided `build_images.sh` script.
Images: https://hub.docker.com/r/carlosedp/kube-rbac-proxy