news 2026/11/2 16:18:20

Ubuntu 22.04部署Prometheus Operator监控K8s集群

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu 22.04部署Prometheus Operator监控K8s集群

1. 环境准备与基础配置

在Ubuntu 22.04 LTS上部署Prometheus Operator前,需要确保基础环境符合要求。我推荐使用全新安装的Ubuntu 22.04系统,避免已有服务造成端口冲突。

1.1 系统级优化

首先执行系统更新和基础工具安装:

sudo apt update && sudo apt upgrade -y sudo apt install -y curl wget git gnupg2 software-properties-common apt-transport-https ca-certificates

调整内核参数以优化Kubernetes网络性能:

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF sudo sysctl --system

提示:对于生产环境,建议单独准备监控节点,避免与其他服务竞争资源。Prometheus Operator对磁盘IO要求较高,使用SSD存储可获得更好性能。

1.2 Kubernetes集群部署

使用kubeadm部署Kubernetes集群(单节点测试环境配置):

sudo apt install -y docker.io sudo systemctl enable --now docker curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt update sudo apt install -y kubelet=1.28.0-00 kubeadm=1.28.0-00 kubectl=1.28.0-00 sudo apt-mark hold kubelet kubeadm kubectl sudo kubeadm init --pod-network-cidr=10.244.0.0/16 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

安装网络插件(这里选择Flannel):

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

2. Prometheus Operator核心组件部署

2.1 使用Helm安装Operator

添加Prometheus社区Helm仓库:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update

创建监控专用命名空间:

kubectl create namespace monitoring

安装Prometheus Operator(使用自定义values优化配置):

cat <<EOF > custom-values.yaml prometheus: prometheusSpec: scrapeInterval: 30s evaluationInterval: 30s retention: 15d resources: requests: memory: 2Gi cpu: 1 limits: memory: 4Gi cpu: 2 storageSpec: volumeClaimTemplate: spec: storageClassName: "standard" accessModes: ["ReadWriteOnce"] resources: requests: storage: 50Gi alertmanager: alertmanagerSpec: replicas: 2 resources: requests: memory: 512Mi cpu: 500m limits: memory: 1Gi cpu: 1 EOF helm install prometheus-operator prometheus-community/kube-prometheus-stack \ -n monitoring \ -f custom-values.yaml

2.2 验证安装状态

检查Pod运行状态:

kubectl get pods -n monitoring -w

预期输出应包含以下关键组件:

prometheus-prometheus-operator-prometheus-0 3/3 Running prometheus-operator-operator-xxx 1/1 Running alertmanager-prometheus-operator-alertmanager-0 2/2 Running grafana-xxx 1/1 Running

获取Prometheus Web UI访问地址:

kubectl port-forward -n monitoring svc/prometheus-operator-prometheus 9090:9090

3. 高级配置与优化策略

3.1 自定义监控目标配置

创建ServiceMonitor监控Kubernetes API Server:

cat <<EOF | kubectl apply -f - apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: kube-apiserver namespace: monitoring labels: release: prometheus-operator spec: jobLabel: component endpoints: - port: https scheme: https bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token tlsConfig: insecureSkipVerify: true namespaceSelector: matchNames: - default selector: matchLabels: component: apiserver provider: kubernetes EOF

3.2 资源配额与自动扩缩

配置Prometheus垂直自动扩缩(VPA):

kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/master/vertical-pod-autoscaler/hack/vpa-beta1-crd.yaml kubectl apply -n monitoring -f - <<EOF apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: prometheus-vpa spec: targetRef: apiVersion: "apps/v1" kind: StatefulSet name: prometheus-prometheus-operator-prometheus updatePolicy: updateMode: "Auto" EOF

3.3 长期存储方案

集成Thanos实现长期存储(可选):

helm repo add bitnami https://charts.bitnami.com/bitnami helm install thanos bitnami/thanos \ --set objstoreConfig=thanos-config \ --set existingObjstoreSecret=thanos-objstore-secret \ -n monitoring

4. 告警与可视化配置

4.1 自定义告警规则

创建关键告警规则示例:

cat <<EOF | kubectl apply -f - apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: kubernetes-alerts namespace: monitoring labels: release: prometheus-operator spec: groups: - name: node.rules rules: - alert: NodeCPUHigh expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 10m labels: severity: warning annotations: summary: "High CPU usage on {{ $labels.instance }}" description: "{{ $labels.instance }} CPU usage is {{ $value }}%" EOF

4.2 Grafana仪表板管理

导入常用Kubernetes仪表板:

DASHBOARD_ID=315 kubectl apply -n monitoring -f - <<EOF apiVersion: integreatly.org/v1alpha1 kind: GrafanaDashboard metadata: name: kubernetes-cluster labels: app: grafana spec: json: | $(curl -sSL https://grafana.com/api/dashboards/${DASHBOARD_ID}/revisions/latest/download | jq -c) EOF

配置Grafana数据源自动发现:

kubectl patch -n monitoring prometheus prometheus-operator-prometheus --type merge -p '{ "spec": { "grafana": { "additionalDataSources": [{ "name": "Loki", "type": "loki", "url": "http://loki.monitoring.svc.cluster.local:3100", "access": "proxy" }] } } }'

5. 生产环境最佳实践

5.1 高可用配置

配置Alertmanager集群与持久化存储:

kubectl patch -n monitoring alertmanager prometheus-operator-alertmanager --type merge -p '{ "spec": { "replicas": 3, "storage": { "volumeClaimTemplate": { "spec": { "storageClassName": "standard", "resources": { "requests": { "storage": "10Gi" } } } } } } }'

5.2 安全加固

启用RBAC和网络策略:

kubectl apply -n monitoring -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: prometheus-allow-only-grafana spec: podSelector: matchLabels: app.kubernetes.io/name: prometheus ingress: - from: - podSelector: matchLabels: app.kubernetes.io/name: grafana EOF

5.3 性能调优

优化Prometheus抓取配置:

kubectl patch -n monitoring prometheus prometheus-operator-prometheus --type merge -p '{ "spec": { "scrapeInterval": "1m", "scrapeTimeout": "10s", "evaluationInterval": "1m", "retention": "30d", "walCompression": true, "query": { "lookbackDelta": "5m", "maxConcurrency": 20, "timeout": "2m" } } }'

我在实际生产环境中发现,当监控目标超过5000个时,需要特别注意以下配置:

  1. 增加--storage.tsdb.max-block-duration和--storage.tsdb.min-block-duration参数
  2. 调整--query.max-samples参数防止查询超时
  3. 为Prometheus配置单独的持久卷,避免存储压力影响其他服务
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/2 16:16:45

大模型输出不稳定怎么破?自我一致性提示词工程实战

同一个提示词、同一个模型、同一套参数&#xff0c;连着跑三次给你三个互相打架的答案——我第一次碰到这种情况时&#xff0c;第一反应是接口缓存串了数据&#xff0c;翻了半天请求日志才发现是自己把 temperature 设成了 0.7。那会儿我正在做一批数学应用题的批量评测&#x…

作者头像 李华
网站建设 2026/11/2 16:14:17

教育论文数据处理工具:智能分析与可视化实践

1. 项目概述&#xff1a;教育论文的数据炼金术 "书匠策AI"这个名称本身就暗示了双重属性——既保留传统学术的严谨性&#xff08;书匠&#xff09;&#xff0c;又融入现代技术的高效&#xff08;AI&#xff09;。作为专门针对教育论文的数据处理工具&#xff0c;它本…

作者头像 李华
网站建设 2026/11/2 16:13:41

软考高级选系规还是高项?能力路径决策指南

1. 这不是选择题&#xff0c;而是路线图校准&#xff1a;软考时间窗口错位后的理性决策框架“5月软考没赶上”——这句话背后藏着的不是一次考试缺席&#xff0c;而是一整套职业发展节奏被打乱后的现实焦虑。我带过不少备考学员&#xff0c;几乎每年5月前后都会集中出现这类咨询…

作者头像 李华
网站建设 2026/11/2 16:07:21

工业监控实时数据可视化方案设计与实现

1. 工业监控场景下的实时数据可视化方案设计 在工业自动化监控和实验数据采集领域&#xff0c;实时曲线显示与数据库联动是最基础也最关键的刚需功能。想象一下这样的场景&#xff1a;生产线上的传感器每秒产生数百个温度读数&#xff0c;实验室设备持续输出压力波动数据&#…

作者头像 李华
网站建设 2026/11/2 16:07:13

MATLAB特征值入门:三行代码看懂数据的‘性格说明书’

简介&#xff1a;本资源是一份面向MATLAB初学者与工科高年级学生的矩阵分析专项学习文档&#xff0c;聚焦特征值与特征向量、矩阵对角化、实对称矩阵正交对角化、若当标准形等核心线性代数计算实践。内容以高校数值分析或矩阵论实验为背景&#xff0c;完整覆盖实验目的、原理推…

作者头像 李华
网站建设 2026/11/2 16:05:44

10款AI论文工具测评与本科生写作效率提升指南

1. 本科生论文写作的痛点与AI工具的价值写论文对于本科生来说从来都不是件轻松事。记得我大二那年为了完成一篇8000字的课程论文&#xff0c;整整熬了三个通宵&#xff0c;查资料查到眼花&#xff0c;格式调得想砸键盘。现在回想起来&#xff0c;如果当时有这些AI论文工具辅助&…

作者头像 李华