配置文件编辑
# cat prometheus-config.yamlapiVersion: v1
kind: Namespace
metadata:name: kube-prom
---
apiVersion: v1
kind: ConfigMap
metadata:name: prometheus-confignamespace: kube-prom
data:prometheus.yml: |global:scrape_interval: 10sevaluation_interval: 10sscrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']# https://github.com/prometheus/prometheus/blob/release-2.21/documentation/examples/prometheus-kubernetes.yml- job_name: 'kubernetes-apiservers'kubernetes_sd_configs:- role: endpointsscheme: httpstls_config:ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crtbearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/tokenrelabel_configs:- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]action: keepregex: default;kubernetes;https- job_name: 'kubernetes-nodes'kubernetes_sd_configs:- role: noderelabel_configs:- source_labels: [__address__]regex: (.*):10250replacement: ${1}:9100action: replacetarget_label: __address__- action: labelmapregex: __meta_kubernetes_node_label_(.+)- job_name: 'kubernetes-pods'kubernetes_sd_configs:- role: podtls_config:ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crtbearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/tokenrelabel_configs:- action: labelmapregex: __meta_kubernetes_pod_label_(.+)- job_name: 'kubernetes-cadvisor'scheme: httpstls_config:ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crtbearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/tokenkubernetes_sd_configs:- role: noderelabel_configs:- target_label: __address__replacement: kubernetes.default.svc:443- source_labels: [__meta_kubernetes_node_name]regex: (.+)replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisortarget_label: __metrics_path__- action: labelmapregex: __meta_kubernetes_node_label_(.+)
部署
# kubectl apply -f prometheus-config.yaml
namespace/kube-prom created
configmap/prometheus-config created
pod yaml文件编辑
# cat prometheus.yaml
apiVersion: v1
kind: Namespace
metadata:name: kube-prom
---
apiVersion: v1
kind: ServiceAccount
metadata:name: prometheusnamespace: kube-prom
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:name: prometheus
rules:
- apiGroups: [""]resources:- nodes- nodes/proxy- services- endpoints- podsverbs: ["get", "list", "watch"]
- apiGroups: [""]resources:- configmaps- nodes/metricsverbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:name: prometheus
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: prometheus
subjects:
- kind: ServiceAccountname: prometheusnamespace: kube-prom
---
apiVersion: apps/v1
kind: Deployment
metadata:labels:name: prometheusname: prometheusnamespace: kube-prom
spec:replicas: 1selector:matchLabels:app: prometheus template:metadata:labels:app: prometheusspec:nodeSelector:disktype: ssdserviceAccountName: prometheushostAliases:- ip: 192.168.12.9hostnames:- "k8s-master"- ip: 192.168.12.16hostnames:- "k8s-worker01"- ip: 192.168.12.17hostnames:- "k8s-worker02"containers:- image: registry.cn-beijing.aliyuncs.com/mayaping/prometheus:v2.0.0name: prometheuscommand:- "/bin/prometheus"args:- "--config.file=/etc/prometheus/prometheus.yml"- "--storage.tsdb.path=/prometheus"- "--storage.tsdb.retention=72h"- "--web.enable-admin-api"- "--web.enable-lifecycle"securityContext:privileged: truerunAsUser: 0ports:- containerPort: 9090protocol: TCPvolumeMounts:- mountPath: "/prometheus"name: data- mountPath: "/etc/prometheus"name: config-volumeresources:requests:cpu: 100mmemory: 100Milimits:cpu: 5000mmemory: 2500Mivolumes:- name: datahostPath:path: /opt/data/prometheus- name: config-volumeconfigMap:name: prometheus-config
---
apiVersion: v1
kind: Service
metadata:name: prometheusnamespace: kube-promlabels:app: prometheus
spec:ports:- name: httpport: 9090protocol: TCPtargetPort: 9090nodePort: 9090selector:app: prometheustype: NodePort
hostAliases:
部署
# kubectl apply -f prometheus.yaml
namespace/kube-prom unchanged
serviceaccount/prometheus created
clusterrole.rbac.authorization.k8s.io/prometheus created
clusterrolebinding.rbac.authorization.k8s.io/prometheus created
deployment.apps/prometheus created
service/prometheus created
访问测试
# curl http://192.168.12.9:9090
<a href="/graph">Found</a>.
查看服务启动情况
# kubectl get pods --namespace kube-prom
NAME READY STATUS RESTARTS AGE
prometheus-7749bcdfd8-g2hmx 1/1 Running 0 60s