kubernetes部署zabbix(k8s)

前言:部署的方式有很多中,这里我们介绍使用容器的方式部署方便日后迁移,这里我使用的是k8s部署的方式,其他方式大家自行参考https://www.zabbix.com/documentation/5.2/zh/manual/installation/containers

 

1、首先我们要准备一个mysql数据库,mysql数据放着容器里跑相对性能较差我们用虚拟机来跑,如果生产环境机器较多监控指标很多可以使用物理机配上SSD磁盘来跑mysql,zabbix性能瓶颈大部分在mysql这里。这里测试我们就直接yum一个mysql

#直接安装mariadb数据库
yum -y install mariadb-server

2、安装完mysql数据库之后我们把它加进k8s集群中调用起来会比较方便

复制代码
[root@master zabbix]# cat mysqlep.yml 
apiVersion: v1
kind: Endpoints
metadata:
  name: mysql
  namespace: monitoring
  labels:
    app: zabbix-server
subsets:
  - addresses:
      - ip: 172.16.149.216
    ports:
      - port: 3306


---
apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: monitoring
  labels:
    app: zabbix-server
spec:
  ports:
    - protocol: TCP
      port: 3306
      targetPort: 3306
复制代码

3、部署zabbix-server

复制代码
[root@master zabbix]# cat zabbix_server.yml 
apiVersion: v1
kind: Service
metadata:
  name: zabbix-server
  namespace: monitoring
  labels:
    app: zabbix-server
spec:
  selector:
    app: zabbix-server
  ports:
  - name: zabbix-server
    port: 10051
    nodePort: 30051
  type: NodePort


---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: zabbix-server
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbix-server
  template:
    metadata:
      labels:
        app: zabbix-server
    spec:
      containers:
      - name: zabbix-server
        image: zabbix/zabbix-server-mysql:latest
        imagePullPolicy: IfNotPresent
        env:
        - name: DB_SERVER_HOST
          value: mysql
        - name: DB_SERVER_PORT
          value: "3306"
        - name: MYSQL_DATABASE
          value: zabbix
        - name: MYSQL_USER
          value: zabbix
        - name: MYSQL_PASSWORD
          value: zabbix
        - name: MYSQL_ROOT_PASSWORD
          value: zabbix
        - name: ZBX_CACHESIZE
          value: "512M"
        - name: ZBX_HISTORYCACHESIZE
          value: "128M"
        - name: ZBX_HISTORYINDEXCACHESIZE
          value: "128M"
        - name: ZBX_TRENDCACHESIZE
          value: "128M"
        - name: ZBX_VALUECACHESIZE
          value: "256M"
        - name: ZBX_TIMEOUT
          value: "30"
        ports:
        - containerPort: 10051
          name: zabbix-server
          protocol: TCP
        resources:
          requests:
            cpu: 1000m
            memory: 1000Mi
          limits:
            cpu: 1000m
            memory: 1000Mi
      - name: zabbix-agent
        image: zabbix/zabbix-agent:latest
        imagePullPolicy: IfNotPresent
        env:
        - name: ZBX_HOSTNAME
          value: "Zabbix server"
        - name: ZBX_SERVER_HOST
          value: "127.0.0.1"
        - name: ZBX_STARTAGENTS
          value: "3"
        - name: ZBX_UNSAFEUSERPARAMETERS
          value: "1"
        - name: ZBX_TIMEOUT
          value: "10"
        ports:
        - containerPort: 10050
          name: zabbix-agent
          protocol: TCP
        resources:
          requests:
            cpu: 200m
            memory: 200Mi
          limits:
            cpu: 200m
            memory: 200Mi
      nodeSelector:             
        node-role.kubernetes.io/master: ""
      tolerations:
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: NoSchedule
复制代码

4、部署zabbix-web

复制代码
[root@master zabbix]# cat zabbix_web.yml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: zabbix-web
  namespace: monitoring
spec:
  rules:
  - host: zabbix.lzxlinux.cn
    http:
      paths:
      - path: /
        backend:
          serviceName: zabbix-web
          servicePort: 8080


---
apiVersion: v1
kind: Service
metadata:
  name: zabbix-web
  namespace: monitoring
  labels:
    app: zabbix-web
spec:
  selector:
    app: zabbix-web
  ports:
  - name: web
    port: 8080
    protocol: TCP


---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: zabbix-web
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbix-web
  template:
    metadata:
      labels:
        app: zabbix-web
    spec:
      containers:
      - name: zabbix-web
        image: zabbix/zabbix-web-nginx-mysql:latest
        imagePullPolicy: IfNotPresent
        env:
        - name: DB_SERVER_HOST
          value: mysql
        - name: MYSQL_DATABASE
          value: zabbix
        - name: MYSQL_USER
          value: zabbix
        - name: MYSQL_PASSWORD
          value: zabbix
        - name: MYSQL_ROOT_PASSWORD
          value: zabbix
        - name: ZBX_SERVER_HOST
          value: 'zabbix-server'
        - name: PHP_TZ
          value: "Asia/Shanghai"
        ports:
        - containerPort: 8080
          name: web
          protocol: TCP
        resources:
          requests:
            cpu: 500m
            memory: 500Mi
          limits:
            cpu: 500m
            memory: 500Mi
复制代码

5、使用zabbix.lzxlinux.cn访问页面

 

 

 

posted @   Throb_JL  阅读(2435)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示