跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

K8S 环境下 Zabbix 监控平台部署实践

在 Kubernetes 集群中部署 Zabbix 监控系统涉及镜像管理、资源编排及网络配置。核心流程包含将 Zabbix 相关镜像推送至私有仓库 Harbor,编写 MariaDB、Server 及 Web 组件的 YAML 文件以创建 Deployment 和 Service。针对 Proxy 组件的网络隔离问题,采取物理机独立部署方式,并通过固定 ClusterIP 实现与集群内组件的通信。提供完整配置示例及关键参数说明,确保监控数据正常采集。

ByteFlow发布于 2025/2/4更新于 2026/10/23103 浏览
K8S 环境下 Zabbix 监控平台部署实践

在 Kubernetes 集群中部署 Zabbix 监控系统,核心在于资源编排与网络连通性处理。以下记录完整的搭建流程,包含镜像准备、组件 YAML 配置及 Proxy 的特殊处理方案。

1. 镜像准备

首先将 Zabbix 相关镜像拉取并推送到私有仓库 Harbor,确保集群内可访问。

docker login 192.168.1.206
# 输入用户名和密码后显示 Login Succeeded

docker pull zabbix/zabbix-web-nginx-mysql
docker pull zabbix/zabbix-server-mysql
docker pull zabbix/zabbix-proxy-mysql
docker pull zabbix/zabbix-snmptraps
docker pull mariadb

重复以下步骤打标签并推送:

docker tag zabbix-web-nginx-mysql 192.168.1.206/mzh/zabbix-web-nginx-mysql
docker push 192.168.1.206/mzh/zabbix-web-nginx-mysql

2. 数据库部署 (MariaDB)

创建 MariaDB 的 Deployment 和 Service 文件。注意存储卷挂载 NFS 路径需提前准备好。

mariadb-server.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mariadb-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mariadb-server
  template:
    metadata:
      labels:
        app: mariadb-server
    spec:
      containers:
      - image: 192.168.1.206/mzh/mariadb
        name: mariadb-server
        ports:
        - containerPort: 3306
          name: db
          protocol: TCP
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "redhat"
        volumeMounts:
        - name: db-nfs
          mountPath: /var/lib/mysql
      volumes:
      - name: db-nfs
        nfs:
          server: 192.168.1.206
          path: "/bak/mariadb-server"

mariadb-server-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: mariadbserver
  labels:
    app: mariadbserver
spec:
  selector:
    app: mariadb-server
  ports:
  - name: db
    port: 3306
    protocol: TCP

应用配置:

kubectl create -f mariadb-server.yaml -f mariadb-server-svc.yaml

3. Zabbix Server 部署

Server 组件需要连接数据库,环境变量中指定了 DB 地址及凭据。

zabbix-server.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: zabbix-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbix-server
  template:
    metadata:
      labels:
        app: zabbix-server
    spec:
      containers:
      - image: 192.168.1.206/mzh/zabbix-server-mysql
        name: zabbix-server
        ports:
        - containerPort: 10051
          name: server
          protocol: TCP
        env:
        - name: DB_SERVER_HOST
          value: "mariadbserver"
        - name: MYSQL_USER
          value: "zabbix"
        - name: MYSQL_PASSWORD
          value: "zabbix"
        - name: MYSQL_DATABASE
          value: "zabbix"
        - name: ZBX_CACHESIZE
          value: "2048M"

zabbix-server-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: zabbixserver
  labels:
    app: zabbix-server
spec:
  clusterIP: 10.254.0.3
  selector:
    app: zabbix-server
  ports:
  - name: server
    port: 10051
    protocol: TCP

应用配置:

kubectl create -f zabbix-server.yaml -f zabbix-server-svc.yaml

4. Zabbix Web 部署

Web 端负责提供 UI 界面,通过 NodePort 暴露服务以便外部访问。

zabbix-web.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: zabbix-web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbix-web
  template:
    metadata:
      labels:
        app: zabbix-web
    spec:
      containers:
      - image: 192.168.1.206/mzh/zabbix-web-nginx-mysql
        name: zabbix-web
        ports:
        - containerPort: 80
          name: web
          protocol: TCP
        env:
        - name: DB_SERVER_HOST
          value: "mariadbserver"
        - name: ZBX_SERVER_HOST
          value: "zabbixserver"
        - name: MYSQL_USER
          value: "zabbix"
        - name: MYSQL_PASSWORD
          value: "zabbix"
        - name: TZ
          value: "Asia/Shanghai"

zabbix-web-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: zabbix-web
  labels:
    app: zabbix-web
spec:
  type: NodePort
  selector:
    app: zabbix-web
  ports:
  - name: web
    port: 80
    protocol: TCP

应用配置:

kubectl create -f zabbix-web.yaml -f zabbix-web-svc.yaml

验证服务状态:

kubectl get svc
# 输出示例:zabbix-web  10.254.165.249  <nodes>  80:10158/TCP  26d

此时可通过浏览器访问对应 IP 进入 Zabbix 登录页面。

5. Proxy 代理配置说明

关于 Zabbix Proxy,原计划使用容器化部署,但实际测试发现容器内部无法访问外部 Agent 获取数据。因此调整方案,将 Proxy 安装在 K8s 集群外的物理节点上,利用固定 ClusterIP 进行通信。

此前创建的 zabbix-server 和 mariadb-proxy 分别分配了固定的 ClusterIP(10.254.0.3 和 10.254.0.4),Proxy 配置文件需指向这些地址。

proxy.conf 关键参数:

Server=10.254.0.3
ServerPort=10051
Hostname=Zabbix_proxy01
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBHost=10.254.0.4
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix
JavaGateway=192.168.1.208
JavaGatewayPort=10052
StartJavaPollers=5
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=4G
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
FpingLocation=/usr/sbin/fping
LogSlowQueries=3000

具体安装过程参考官方文档即可,重点在于网络策略允许 Proxy 访问上述 IP 端口。

目录

  1. 1. 镜像准备
  2. 输入用户名和密码后显示 Login Succeeded
  3. 2. 数据库部署 (MariaDB)
  4. 3. Zabbix Server 部署
  5. 4. Zabbix Web 部署
  6. 输出示例:zabbix-web 10.254.165.249 <nodes> 80:10158/TCP 26d
  7. 5. Proxy 代理配置说明

更多推荐文章

查看全部
  • 工业机器人工具坐标系与多传感器标定实战指南
  • M2FP模型在VR社交中的身体表达技术
  • 算法学习入门指南:数据结构与核心算法实战
  • Sublime Text 安装与中文配置完整指南
  • Faster-Whisper 本地实时语音转文本部署指南
  • LeetCode Hot 100 链表进阶:K 组翻转与归并排序
  • 基于大模型的信息采集模型实现与提示词优化
  • MySQL 索引原理:B+ 树演进与操作实战
  • Python YOLOv8 进阶教程
  • Web 版 IM 聊天信息加密的三种实现方案
  • GitHub开源项目日报:AI代理与本地助手热榜 (2026-02-19)
  • OmniSteward:基于大语言模型的智能语音管家系统
  • OpenClaw 多端交互实测指南:Web、TUI 与钉钉集成详解
  • 2026 AI行业纵深:技术破壁、场景深耕与合规共生
  • MyBatisPlus 与 Thymeleaf 全栈分页整合实战
  • Django 基于 Echarts+Python 的图书零售监测系统设计与实现
  • 基于 AI 辅助编程的在线图书借阅平台设计与实现
  • AI 专利翻译技术解析:功能特性与应用场景
  • Windows 11 本地安装 WSL 2 支持 Ubuntu 24.04 指南
  • Python 自动化脚本实战:文件、办公与系统任务

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online