Kubernetes集群环境下的Zabbix监控系统部署指南

一、Kubernetes集群环境搭建

1.1 基础环境配置

在部署监控系统前,需确保集群节点满足以下条件:

  • 操作系统:CentOS 8或RHEL 8系列
  • 硬件配置:每个节点至少4核CPU、8GB内存
  • 网络要求:支持Overlay网络(如Calico或Flannel)

静态IP配置

修改网络接口配置文件(以ens192为例):

  1. # 编辑网络配置文件
  2. vi /etc/sysconfig/network-scripts/ifcfg-ens192
  3. # 核心参数配置
  4. BOOTPROTO="none"
  5. ONBOOT="yes"
  6. IPADDR=192.168.3.174
  7. PREFIX=24
  8. GATEWAY=192.168.1.1
  9. DNS1=114.114.114.114

应用配置后重启网络服务:

  1. systemctl restart network
  2. ip a # 验证IP配置

主机名解析配置

在所有节点维护统一的hosts文件:

  1. cat >> /etc/hosts <<EOF
  2. 192.168.3.174 k8s-master01
  3. 192.168.3.175 k8s-node01
  4. 192.168.3.176 k8s-node02
  5. EOF

1.2 Docker容器运行时配置

旧版本清理与源配置

  1. # 卸载冲突组件
  2. yum remove docker docker-engine docker-ce docker-* containerd.io
  3. # 配置软件源(使用国内镜像加速)
  4. curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.example.com/repo/Centos-8.repo
  5. yum-config-manager --add-repo https://mirrors.example.com/docker-ce/linux/centos/docker-ce.repo
  6. # 修正版本变量(关键步骤)
  7. echo "8" > /etc/yum/vars/centos_version
  8. sed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/*.repo
  9. # 安装指定版本(推荐LTS版本)
  10. yum install -y docker-ce-20.10.23 docker-ce-cli-20.10.23 containerd.io

守护进程优化配置

创建/etc/docker/daemon.json文件:

  1. {
  2. "exec-opts": ["native.cgroupdriver=systemd"],
  3. "log-driver": "json-file",
  4. "log-opts": {
  5. "max-size": "100m"
  6. },
  7. "storage-driver": "overlay2",
  8. "registry-mirrors": [
  9. "https://registry-mirror.example.com"
  10. ]
  11. }

应用配置并启动服务:

  1. systemctl enable --now docker
  2. systemctl status docker # 验证运行状态

二、Kubernetes集群初始化

2.1 控制平面组件部署

  1. # 初始化主节点(使用kubeadm)
  2. kubeadm init --kubernetes-version v1.26.8 \
  3. --pod-network-cidr=10.244.0.0/16 \
  4. --service-cidr=10.96.0.0/12 \
  5. --ignore-preflight-errors=Swap
  6. # 配置kubectl
  7. mkdir -p $HOME/.kube
  8. cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  9. chown $(id -u):$(id -g) $HOME/.kube/config

2.2 网络插件安装

推荐使用Calico网络方案:

  1. kubectl create -f https://docs.projectcalico.org/manifests/calico.yaml
  2. kubectl get pods -n kube-system # 验证网络组件状态

2.3 节点加入集群

在worker节点执行初始化时生成的join命令:

  1. kubeadm join 192.168.3.174:6443 \
  2. --token abcdef.1234567890abcdef \
  3. --discovery-token-ca-cert-hash sha256:xxxxxx

三、Zabbix容器化部署方案

3.1 Helm Chart部署方式

添加Helm仓库

  1. helm repo add zabbix https://charts.example.com/zabbix
  2. helm repo update

自定义Values配置

创建zabbix-values.yaml文件:

  1. server:
  2. image:
  3. repository: zabbix/zabbix-server-mysql
  4. tag: 6.0.28-latest
  5. resources:
  6. limits:
  7. cpu: 1000m
  8. memory: 2Gi
  9. requests:
  10. cpu: 500m
  11. memory: 1Gi
  12. database:
  13. type: mysql
  14. mysql:
  15. image: mysql:8.0
  16. rootPassword: zabbix-db-password
  17. database: zabbix
  18. user: zabbix
  19. password: zabbix-password
  20. web:
  21. image:
  22. repository: zabbix/zabbix-web-nginx-mysql
  23. tag: 6.0.28-latest
  24. ingress:
  25. enabled: true
  26. hosts:
  27. - host: zabbix.example.com
  28. paths: ["/"]

执行部署命令

  1. helm install zabbix zabbix/zabbix \
  2. -f zabbix-values.yaml \
  3. --namespace monitoring \
  4. --create-namespace

3.2 关键组件验证

  1. # 检查Pod状态
  2. kubectl get pods -n monitoring
  3. # 查看服务暴露情况
  4. kubectl get svc -n monitoring
  5. # 验证Ingress配置
  6. kubectl describe ingress zabbix -n monitoring

四、生产环境优化建议

4.1 持久化存储配置

推荐使用CSI驱动对接分布式存储:

  1. # 在values文件中添加存储配置
  2. server:
  3. persistence:
  4. enabled: true
  5. storageClass: "csi-nfs-sc"
  6. accessModes: [ "ReadWriteOnce" ]
  7. size: 10Gi

4.2 高可用架构设计

  • 数据库层:采用主从复制或集群方案
  • 应用层:通过Deployment实现多副本部署
  • 数据层:配置定时备份策略(建议使用Velero工具)

4.3 监控指标采集优化

  • 调整Zabbix Server的CacheSize参数
  • 配置合理的Housekeeper设置
  • 启用Preprocessing功能减轻后端压力

五、常见问题排查

5.1 数据库连接失败

检查连接字符串格式:

  1. jdbc:mysql://zabbix-mysql:3306/zabbix?useSSL=false&allowPublicKeyRetrieval=true

5.2 Web界面无法访问

  • 检查Ingress控制器状态
  • 验证证书配置(如使用TLS)
  • 查看Pod日志:kubectl logs -n monitoring zabbix-web-xxxx

5.3 采集器工作异常

  • 检查Agent配置文件中的Server参数
  • 验证网络策略是否放行10050端口
  • 查看Agent日志:kubectl logs -n monitoring zabbix-agent-xxxx

通过以上标准化部署流程,运维团队可在Kubernetes环境中快速构建企业级监控平台。建议结合Prometheus Operator实现混合监控方案,既保留Zabbix的传统优势,又发挥Prometheus在云原生环境中的监控能力。