k8s 部署prometheus
时间: 2023-09-10 17:11:17 浏览: 111
以下是在 Kubernetes 上部署 Prometheus 的步骤:
1. 首先,我们需要创建一个 Namespace,用于存放 Prometheus 相关的资源:
```
kubectl create namespace prometheus
```
2. 接下来,我们需要创建一个 Prometheus 配置文件 prometheus.yaml,具体内容如下:
```
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-config
namespace: prometheus
data:
prometheus.yml: |
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'kubernetes-apiservers'
kubernetes_sd_configs:
- role: endpoints
api_server: https://kubernetes.default.svc
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
scheme: https
metrics_path: /metrics
honor_labels: true
tls_config:
insecure_skip_verify: true
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
```
该配置文件中定义了 Prometheus 的全局配置和抓取配置,其中 job_name 为 kubernetes-apiservers,用于抓取 Kubernetes API Server 的指标。
3. 接下来,我们需要创建一个 Prometheus 部署文件 prometheus-deployment.yaml,具体内容如下:
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: prometheus
namespace: prometheus
labels:
app: prometheus
spec:
replicas: 1
selector:
matchLabels:
app: prometheus
template:
metadata:
labels:
app: prometheus
spec:
containers:
- name: prometheus
image: prom/prometheus:v2.28.1
args:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
ports:
- name: web
containerPort: 9090
volumeMounts:
- name: prometheus-config
mountPath: /etc/prometheus
- name: prometheus-data
mountPath: /prometheus
volumes:
- name: prometheus-config
configMap:
name: prometheus-config
- name: prometheus-data
emptyDir: {}
```
该部署文件中定义了一个名为 prometheus 的 Deployment,使用 prom/prometheus:v2.28.1 镜像,挂载了 prometheus-config 和 prometheus-data 两个 Volume。
4. 最后,我们需要创建一个 Prometheus Service 文件 prometheus-service.yaml,具体内容如下:
```
apiVersion: v1
kind: Service
metadata:
name: prometheus
namespace: prometheus
spec:
selector:
app: prometheus
ports:
- name: web
port: 9090
targetPort: web
type: ClusterIP
```
该 Service 文件中定义了一个名为 prometheus 的 Service,类型为 ClusterIP,暴露了 9090 端口。
5. 执行以下命令,部署 Prometheus:
```
kubectl apply -f prometheus.yaml
kubectl apply -f prometheus-deployment.yaml
kubectl apply -f prometheus-service.yaml
```
6. 部署完成后,可以通过以下命令获取 Prometheus 的服务地址:
```
kubectl get svc prometheus -n prometheus
```
7. 访问 Prometheus 服务地址,即可查看抓取的指标数据。
阅读全文