From 1795a62841f5cee5ea7135cece353d1d15b00c5e Mon Sep 17 00:00:00 2001 From: Frederic Branczyk <fbranczyk@gmail.com> Date: Tue, 1 Nov 2016 12:25:43 +0100 Subject: [PATCH] manifests: add headless services for k8s components This way they are discoverable via the kubernetes endpoints discovery of Prometheus. --- ...roller-manager-bootkube-vagrant-multi.yaml | 18 ++++++++++++++ .../kube-dns-prom-bootkube-vagrant-multi.yaml | 18 ++++++++++++++ ...kube-scheduler-bootkube-vagrant-multi.yaml | 18 ++++++++++++++ manifests/prometheus/prometheus-k8s-cm.yaml | 24 +++++++++++++++++++ 4 files changed, 78 insertions(+) create mode 100644 manifests/k8s/kube-controller-manager-bootkube-vagrant-multi.yaml create mode 100644 manifests/k8s/kube-dns-prom-bootkube-vagrant-multi.yaml create mode 100644 manifests/k8s/kube-scheduler-bootkube-vagrant-multi.yaml diff --git a/manifests/k8s/kube-controller-manager-bootkube-vagrant-multi.yaml b/manifests/k8s/kube-controller-manager-bootkube-vagrant-multi.yaml new file mode 100644 index 00000000..316076f3 --- /dev/null +++ b/manifests/k8s/kube-controller-manager-bootkube-vagrant-multi.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: Service +metadata: + name: kube-controller-manager-prometheus-discovery + labels: + k8s-app: kube-controller-manager + annotations: + prometheus.io/scrape: 'true' +spec: + selector: + k8s-app: kube-controller-manager + type: ClusterIP + clusterIP: None + ports: + - name: prometheus + port: 10252 + targetPort: 10252 + protocol: TCP diff --git a/manifests/k8s/kube-dns-prom-bootkube-vagrant-multi.yaml b/manifests/k8s/kube-dns-prom-bootkube-vagrant-multi.yaml new file mode 100644 index 00000000..ec949c99 --- /dev/null +++ b/manifests/k8s/kube-dns-prom-bootkube-vagrant-multi.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: Service +metadata: + name: kube-dns-prometheus-discovery + labels: + k8s-app: kube-dns + annotations: + prometheus.io/scrape: 'true' +spec: + selector: + k8s-app: kube-dns + type: ClusterIP + clusterIP: None + ports: + - name: prometheus + port: 8082 + targetPort: 8082 + protocol: TCP diff --git a/manifests/k8s/kube-scheduler-bootkube-vagrant-multi.yaml b/manifests/k8s/kube-scheduler-bootkube-vagrant-multi.yaml new file mode 100644 index 00000000..67360ec2 --- /dev/null +++ b/manifests/k8s/kube-scheduler-bootkube-vagrant-multi.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: Service +metadata: + name: kube-scheduler-prometheus-discovery + labels: + k8s-app: kube-scheduler + annotations: + prometheus.io/scrape: 'true' +spec: + selector: + k8s-app: kube-scheduler + type: ClusterIP + clusterIP: None + ports: + - name: prometheus + port: 10251 + targetPort: 10251 + protocol: TCP diff --git a/manifests/prometheus/prometheus-k8s-cm.yaml b/manifests/prometheus/prometheus-k8s-cm.yaml index 0a9fc30e..73389f51 100644 --- a/manifests/prometheus/prometheus-k8s-cm.yaml +++ b/manifests/prometheus/prometheus-k8s-cm.yaml @@ -50,3 +50,27 @@ data: regex: kubernetes target_label: __scheme__ replacement: https + + # Scrapes the endpoint lists for the kube-dns server. Which we consider + # part of a default setup. + - job_name: kube-components + scrape_interval: 20s + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + + kubernetes_sd_configs: + - role: endpoints + + relabel_configs: + - action: replace + source_labels: [__meta_kubernetes_service_name] + target_label: job + regex: "kube-(.*)-prometheus-discovery" + replacement: "kube-${1}" + - action: keep + source_labels: [__meta_kubernetes_service_name] + regex: "kube-(.*)-prometheus-discovery" + - action: keep + source_labels: [__meta_kubernetes_endpoint_port_name] + regex: "prometheus" -- GitLab