部署Prometheus
在上一小节总我们介绍了与Kubernetes的应用管理模型,并且利用MiniKube在本地搭建了一个单节点的Kubernetes。这一部分我们将带领读者通过Kubernetes部署Prometheus实例。

使用ConfigMaps管理应用配置

当使用Deployment管理和部署应用程序时,用户可以方便了对应用进行扩容或者缩容,从而产生多个Pod实例。为了能够统一管理这些Pod的配置信息,在Kubernetes中可以使用ConfigMaps资源定义和管理这些配置,并且通过环境变量或者文件系统挂载的方式让容器使用这些配置。
这里将使用ConfigMaps管理Prometheus的配置文件,创建prometheus-config.yml文件,并写入以下内容:
1
apiVersion: v1
2
kind: ConfigMap
3
metadata:
4
name: prometheus-config
5
data:
6
prometheus.yml: |
7
global:
8
scrape_interval: 15s
9
evaluation_interval: 15s
10
scrape_configs:
11
- job_name: 'prometheus'
12
static_configs:
13
- targets: ['localhost:9090']
Copied!
使用kubectl命令行工具,在命名空间default创建ConfigMap资源:
1
kubectl create -f prometheus-config.yml
2
configmap "prometheus-config" created
Copied!

使用Deployment部署Prometheus

当ConfigMap资源创建成功后,我们就可以通过Volume挂载的方式,将Prometheus的配置文件挂载到容器中。 这里我们通过Deployment部署Prometheus Server实例,创建prometheus-deployment.yml文件,并写入以下内容:
1
apiVersion: v1
2
kind: "Service"
3
metadata:
4
name: prometheus
5
labels:
6
name: prometheus
7
spec:
8
ports:
9
- name: prometheus
10
protocol: TCP
11
port: 9090
12
targetPort: 9090
13
selector:
14
app: prometheus
15
type: NodePort
16
---
17
apiVersion: extensions/v1beta1
18
kind: Deployment
19
metadata:
20
labels:
21
name: prometheus
22
name: prometheus
23
spec:
24
replicas: 1
25
template:
26
metadata:
27
labels:
28
app: prometheus
29
spec:
30
containers:
31
- name: prometheus
32
image: prom/prometheus:v2.2.1
33
command:
34
- "/bin/prometheus"
35
args:
36
- "--config.file=/etc/prometheus/prometheus.yml"
37
ports:
38
- containerPort: 9090
39
protocol: TCP
40
volumeMounts:
41
- mountPath: "/etc/prometheus"
42
name: prometheus-config
43
volumes:
44
- name: prometheus-config
45
configMap:
46
name: prometheus-config
Copied!
该文件中分别定义了Service和Deployment,Service类型为NodePort,这样我们可以通过虚拟机IP和端口访问到Prometheus实例。为了能够让Prometheus实例使用ConfigMap中管理的配置文件,这里通过volumes声明了一个磁盘卷。并且通过volumeMounts将该磁盘卷挂载到了Prometheus实例的/etc/prometheus目录下。
使用以下命令创建资源,并查看资源的创建情况:
1
$ kubectl create -f prometheus-deployment.yml
2
service "prometheus" created
3
deployment "prometheus" created
4
5
$ kubectl get pods
6
NAME READY STATUS RESTARTS AGE
7
prometheus-55f655696d-wjqcl 1/1 Running 0 5s
8
9
$ kubectl get svc
10
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
11
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 131d
12
prometheus NodePort 10.101.255.236 <none> 9090:32584/TCP 42s
Copied!
至此,我们可以通过MiniKube虚拟机的IP地址和端口32584访问到Prometheus的服务。
Prometheus UI
Last modified 2yr ago