一、Kubernetes集群环境搭建
1.1 基础环境配置
在部署监控系统前,需确保集群节点满足以下条件:
- 操作系统:CentOS 8或RHEL 8系列
- 硬件配置:每个节点至少4核CPU、8GB内存
- 网络要求:支持Overlay网络(如Calico或Flannel)
静态IP配置
修改网络接口配置文件(以ens192为例):
# 编辑网络配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens192# 核心参数配置BOOTPROTO="none"ONBOOT="yes"IPADDR=192.168.3.174PREFIX=24GATEWAY=192.168.1.1DNS1=114.114.114.114
应用配置后重启网络服务:
systemctl restart networkip a # 验证IP配置
主机名解析配置
在所有节点维护统一的hosts文件:
cat >> /etc/hosts <<EOF192.168.3.174 k8s-master01192.168.3.175 k8s-node01192.168.3.176 k8s-node02EOF
1.2 Docker容器运行时配置
旧版本清理与源配置
# 卸载冲突组件yum remove docker docker-engine docker-ce docker-* containerd.io# 配置软件源(使用国内镜像加速)curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.example.com/repo/Centos-8.repoyum-config-manager --add-repo https://mirrors.example.com/docker-ce/linux/centos/docker-ce.repo# 修正版本变量(关键步骤)echo "8" > /etc/yum/vars/centos_versionsed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/*.repo# 安装指定版本(推荐LTS版本)yum install -y docker-ce-20.10.23 docker-ce-cli-20.10.23 containerd.io
守护进程优化配置
创建/etc/docker/daemon.json文件:
{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2","registry-mirrors": ["https://registry-mirror.example.com"]}
应用配置并启动服务:
systemctl enable --now dockersystemctl status docker # 验证运行状态
二、Kubernetes集群初始化
2.1 控制平面组件部署
# 初始化主节点(使用kubeadm)kubeadm init --kubernetes-version v1.26.8 \--pod-network-cidr=10.244.0.0/16 \--service-cidr=10.96.0.0/12 \--ignore-preflight-errors=Swap# 配置kubectlmkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config
2.2 网络插件安装
推荐使用Calico网络方案:
kubectl create -f https://docs.projectcalico.org/manifests/calico.yamlkubectl get pods -n kube-system # 验证网络组件状态
2.3 节点加入集群
在worker节点执行初始化时生成的join命令:
kubeadm join 192.168.3.174:6443 \--token abcdef.1234567890abcdef \--discovery-token-ca-cert-hash sha256:xxxxxx
三、Zabbix容器化部署方案
3.1 Helm Chart部署方式
添加Helm仓库
helm repo add zabbix https://charts.example.com/zabbixhelm repo update
自定义Values配置
创建zabbix-values.yaml文件:
server:image:repository: zabbix/zabbix-server-mysqltag: 6.0.28-latestresources:limits:cpu: 1000mmemory: 2Girequests:cpu: 500mmemory: 1Gidatabase:type: mysqlmysql:image: mysql:8.0rootPassword: zabbix-db-passworddatabase: zabbixuser: zabbixpassword: zabbix-passwordweb:image:repository: zabbix/zabbix-web-nginx-mysqltag: 6.0.28-latestingress:enabled: truehosts:- host: zabbix.example.compaths: ["/"]
执行部署命令
helm install zabbix zabbix/zabbix \-f zabbix-values.yaml \--namespace monitoring \--create-namespace
3.2 关键组件验证
# 检查Pod状态kubectl get pods -n monitoring# 查看服务暴露情况kubectl get svc -n monitoring# 验证Ingress配置kubectl describe ingress zabbix -n monitoring
四、生产环境优化建议
4.1 持久化存储配置
推荐使用CSI驱动对接分布式存储:
# 在values文件中添加存储配置server:persistence:enabled: truestorageClass: "csi-nfs-sc"accessModes: [ "ReadWriteOnce" ]size: 10Gi
4.2 高可用架构设计
- 数据库层:采用主从复制或集群方案
- 应用层:通过Deployment实现多副本部署
- 数据层:配置定时备份策略(建议使用Velero工具)
4.3 监控指标采集优化
- 调整Zabbix Server的CacheSize参数
- 配置合理的Housekeeper设置
- 启用Preprocessing功能减轻后端压力
五、常见问题排查
5.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在云原生环境中的监控能力。