Kubernetes 部署 Prometheus 监控栈操作手册
·
1. 安装 Helm 客户端
在 Linux 服务器上执行以下命令:
# 下载二进制包
curl -LO https://get.helm.sh/helm-v4.1.1-linux-amd64.tar.gz
# 解压
tar -zxvf helm-v4.1.1-linux-amd64.tar.gz
# 移动至系统路径
sudo mv linux-amd64/helm /usr/local/bin/helm
# 验证安装
helm version
2. 准备 Chart 包
-
访问官方 GitHub Release 页面:
👉 https://github.com/prometheus-community/helm-charts/releases -
寻找以
kube-prometheus-stack-开头的.tgz文件(例如kube-prometheus-stack-64.5.0.tgz)。注意:不要下载源码包,要下载 Chart 包。
-
下载并上传到服务器
/root目录,然后解压:tar -zxvf kube-prometheus-stack-*.tgz cd kube-prometheus-stack-*
3. 配置自定义参数 (my-config.yaml)
在当前目录下创建 my-config.yaml 文件。所有镜像地址已统一修改为 harbor.sunlipeng.org。
⚠️ 重要提示:
- 请确保
harbor.sunlipeng.org仓库中已存在以下镜像且标签版本与 Chart 默认版本一致。- 如果仓库中版本不同,请在下方配置中手动调整
tag版本号。- 副本数已设置为
1以避免ReadWriteOnce存储模式的挂载冲突。如需多副本,请确保存储支持ReadWriteMany。
vim my-config.yaml
粘贴以下内容:
# ================= 1. Grafana 配置 =================
grafana:
adminPassword: "123456" # 登录密码
# --- 镜像配置 ---
image:
repository: harbor.sunlipeng.org/grafana/grafana
# tag 留空则使用 Chart 默认版本,如需指定请取消注释并修改
# tag: "10.0.0"
pullPolicy: IfNotPresent
# --- Ingress 配置 ---
ingress:
enabled: true
ingressClassName: "nginx"
hosts:
- "grafana.example.com"
# ================= 2. Prometheus 配置 =================
prometheus:
prometheusSpec:
# --- 副本数 (建议先设为 1,避免存储冲突) ---
replicas: 1
# --- 镜像配置 ---
image:
repository: harbor.sunlipeng.org/prometheus/prometheus
# tag: "v2.50.0"
pullPolicy: IfNotPresent
# --- PVC 存储配置 ---
storageSpec:
volumeClaimTemplate:
spec:
storageClassName: "longhorn" # 请确认集群中有此 StorageClass
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
# --- 资源限制 ---
resources:
limits:
memory: 1Gi
cpu: 500m
# Prometheus Config Reloader 镜像
prometheusConfigReloader:
image:
repository: harbor.sunlipeng.org/quay.io/prometheus-operator/prometheus-config-reloader
pullPolicy: IfNotPresent
# ================= 3. Alertmanager 配置 =================
alertmanager:
enabled: true
alertmanagerSpec:
replicas: 1
# --- 镜像配置 ---
image:
repository: harbor.sunlipeng.org/prometheus/alertmanager
# tag: "v0.26.0"
pullPolicy: IfNotPresent
ingress:
enabled: true
ingressClassName: "nginx"
hosts:
- "alert.example.com"
# ================= 4. Kube State Metrics 配置 =================
kube-state-metrics:
# --- 镜像配置 ---
image:
repository: harbor.sunlipeng.org/registry.k8s.io/kube-state-metrics/kube-state-metrics
# tag: "v2.18.0" # 请确保 Harbor 中有此版本
pullPolicy: IfNotPresent
resources:
requests:
memory: 64Mi
cpu: 50m
limits:
memory: 128Mi
cpu: 100m
# ================= 5. Node Exporter 配置 =================
prometheus-node-exporter:
enabled: true
image:
repository: harbor.sunlipeng.org/quay.io/prometheus/node-exporter
pullPolicy: IfNotPresent
# ================= 6. Operator 配置 =================
prometheusOperator:
image:
repository: harbor.sunlipeng.org/quay.io/prometheus-operator/prometheus-operator
pullPolicy: IfNotPresent
4. 执行安装
在 my-config.yaml 所在目录下执行:
helm install my-monitoring . \
--namespace monitoring \
-f my-config.yaml \
--create-namespace \
--timeout 10m
5. 验证与访问
5.1 检查状态
等待 2-5 分钟,执行以下命令检查资源:
# 查看 Pod 状态 (应全部为 Running)
kubectl get pods -n monitoring
# 查看 PVC 绑定状态 (应为 Bound)
kubectl get pvc -n monitoring
# 查看 Ingress 地址
kubectl get ingress -n monitoring
5.2 访问服务
方式一:通过 Ingress (需配置 DNS 或 Hosts)
- 获取 Ingress IP:
kubectl get ingress -n monitoring - 在本机 hosts 文件添加解析:
<Ingress-IP> grafana.example.com <Ingress-IP> alert.example.com - 浏览器访问:
- Grafana:
http://grafana.example.com(用户:admin, 密码:123456) - Alertmanager:
http://alert.example.com
- Grafana:
6. 常用维护命令
升级配置 (修改 my-config.yaml 后):
helm upgrade my-monitoring . --namespace monitoring -f my-config.yaml
卸载:
helm uninstall my-monitoring -n monitoring
kubectl delete namespace monitoring
查看 Release 状态:
helm list -n monitoring
更多推荐




所有评论(0)