ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ## **使用ConfigMap管理配置** 新建文件prometheus-config.yaml,内容如下: ``` apiVersion: v1 kind: ConfigMap metadata: name: prometheus-config namespace: kube-system data: prometheus.yml: | global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: ``` 然后在kubernetes中创建该ConfigMap ``` $ kubectl create -f prometheus-config.yaml ``` ## **使用Deployment部署Prometheus** 当ConfigMap资源创建成功后,我们就可以通过Volume挂载的方式,将Prometheus的配置文件挂载到容器中。 这里我们通过Deployment部署Prometheus Server实例,创建prometheus-deployment.yml文件,并写入以下内容 ``` apiVersion: apps/v1 kind: Deployment metadata: name: prometheus namespace: kube-system spec: replicas: 1 selector: matchLabels: app: prometheus template: metadata: labels: app: prometheus spec: containers: - name: prometheus image: prom/prometheus:v2.15.1 command: - /bin/prometheus args: - --config.file=/etc/prometheus/prometheus.yml volumeMounts: - mountPath: /etc/prometheus name: prometheus-config volumes: - name: prometheus-config configMap: name: prometheus-config ``` 为了能够让Prometheus实例使用ConfigMap中管理的配置文件,这里通过volumes声明了一个磁盘卷。并且通过volumeMounts将该磁盘卷挂载到了Prometheus实例的`/etc/prometheus`目录下。 使用以下命令创建资源,并查看Pod: ``` $ kubectl create -f prometheus-deployment.yaml deployment.apps/prometheus created $ kubectl get pod -n kube-system | grep prometheus prometheus-79bc59554f-4psxt 1/1 Running 0 42s ``` ## **创建Service对外提供访问** 新建文件prometheus-service.yaml,内容如下: ``` apiVersion: v1 kind: Service metadata: name: prometheus namespace: kube-system spec: type: NodePort selector: app: prometheus ports: - name: prometheus protocol: TCP port: 9090 targetPort: 9090 ``` 执行以下的命令创建,并查看Service的状态 ``` $ kubectl apply -f prometheus-service.yaml service/prometheus created $ kubectl get service prometheus -n kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE prometheus NodePort 10.101.84.173 <none> 9090:31320/TCP 38s ``` 现在,我们可以通过主机的31320端口来访问Prometheus了