k8s简单部署zabbix监控系统

本文介绍如何使用Kubernetes部署Zabbix监控系统,包括创建MySQL数据库、Zabbix Server及Zabbix Web界面的部署文件,并详细展示了各组件的配置参数与服务端口映射。


k8s部署zabbix监控系统

1.创建mysql部署文件
vim mysql-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: mysql:5.7
        name: mysql
        imagePullPolicy: IfNotPresent
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "zabbix"
        - name: MYSQL_DATABASE
          value: "zabbix"
        - name: MYSQL_USER
          value: "zabbix"
        - name: MYSQL_PASSWORD
          value: "zabbix"
        ports:
        - containerPort: 3306
          name: mysql
---
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  type: NodePort
  ports:
  - port: 3306
    nodePort: 30006
    protocol: TCP
    targetPort: 3306 
  selector:
    app: mysql
    

2.部署zabbix-server
vim zabbix-server-deploy.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:
        - name: zabbix-server
          image: zabbix/zabbix-server-mysql
          imagePullPolicy: IfNotPresent
          ports:
          - containerPort: 10051
            name: server
            protocol: TCP
          readinessProbe:
            tcpSocket:
              port: server
            initialDelaySeconds: 5
            periodSeconds: 10
          livenessProbe:
            tcpSocket:
              port: server
            initialDelaySeconds: 15
            periodSeconds: 20
          env:
          - name: DB_SERVER_HOST
            value: "mysql"
          - name: MYSQL_USER
            value: "zabbix"
          - name: MYSQL_PASSWORD
            value: "zabbix"
          - name: MYSQL_DATABASE
            value: "zabbix"
          - name: DB_SERVER_PORT
            value: "3306"
---
apiVersion: v1
kind: Service
metadata:
  name: zabbixserver
spec:
  type: NodePort
  ports:
  - port:  10051
    nodePort: 30051
    protocol: TCP
    targetPort: 10051
  selector:
    app: zabbix-server
    
3.部署zabbix-web
vim zabbix-web-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: zabbix-web
spec:
  replicas: 2
  selector:
    matchLabels:
      app: zabbix-web
  template:
    metadata:
      labels:
        app: zabbix-web
    spec:
      containers:
      - image: zabbix/zabbix-web-nginx-mysql
        name: zabbix-web
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          name: web
          protocol: TCP
        env:
        - name: DB_SERVER_HOST
          value: "mysql"
        - name:  ZBX_SERVER_HOST
          value: "zabbixserver"
        - name: MYSQL_USER
          value: "zabbix"
        - name: MYSQL_PASSWORD
          value: "zabbix"
        - name: TZ
          value: "Asia/Shanghai"
---
apiVersion: v1
kind: Service
metadata:
  name: zabbix-web
spec:
  type: NodePort
  ports:
  - port: 80
    protocol: TCP
    nodePort: 30080
    targetPort: 80
  selector:
    app: zabbix-web
    
[root@k8s zabbix]# docker images
REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
zabbix/zabbix-agent             latest              954724565311        6 days ago          14.5MB
coredns/coredns                 1.6.2               bf261d157914        8 months ago        44.1MB
zabbix/zabbix-web-nginx-mysql   latest              a9f298a246c6        15 months ago       163MB
zabbix/zabbix-server-mysql      latest              e7a125d25077        15 months ago       62.7MB
zabbix/zabbix-proxy-mysql       latest              e1a7866b9a83        15 months ago       60.8MB
busybox                         1.28                8c811b4aec35        23 months ago       1.15MB
k8s.gcr.io/pause                3.1                 da86e6ba6ca1        2 years ago         742kB
mysql                           5.7                 877345fbf968        3 years ago         406MB

[root@k8s zabbix]# kubectl create -f mysql-deploy.yaml       
[root@k8s zabbix]# kubectl create -f zabbix-server-deploy.yaml      
[root@k8s zabbix]# kubectl create -f zabbix-web-deploy.yaml        
    
[root@k8s zabbix]# kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
busybox                         1/1     Running   5          3d7h
mysql-f74967858-9nzqw           1/1     Running   0          26m
zabbix-server-c74989dc7-b24z6   1/1     Running   0          25m
zabbix-web-856989975-drvbw      1/1     Running   0          24m
zabbix-web-856989975-txnf9      1/1     Running   0          24m    
    
[root@k8s zabbix]# kubectl get svc
NAME           TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)           AGE
kubernetes     ClusterIP   169.169.0.1       <none>        443/TCP           5d5h
mysql          NodePort    169.169.198.178   <none>        3306:30006/TCP    3m21s
zabbix-web     NodePort    169.169.183.23    <none>        80:30080/TCP      81s
zabbixserver   NodePort    169.169.103.35    <none>        10051:30051/TCP   2m28s

[root@k8s zabbix]# kubectl get deploy
NAME            READY   UP-TO-DATE   AVAILABLE   AGE
mysql           1/1     1            1           27m
zabbix-server   1/1     1            1           26m
zabbix-web      2/2     2            2           25m

 

 

 

 

<think>好的,我现在要帮用户解答如何在Kubernetes上安装和部署Zabbix监控系统的问题。首先,我需要整理用户提供的引用内容,看看里面有哪些有用的信息。 用户引用了五篇文章,其中提到Zabbix6需要Kubernetes 1.18以上版本,推荐使用6.x和k8s 1.25.x。监控架构涉及到在K8S节点安装容器化agent,Zabbix-proxy汇总数据到外部的Zabbix-Server。另外还有部署Zabbix Server的示例,比如使用官方镜像,以及一些部署后的状态,比如Pod的运行情况。 接下来,我需要结合这些信息,按照用户的要求生成一个结构清晰的教程。用户希望步骤详细,所以可能需要分步骤说明环境准备、创建命名空间、部署数据库、部署Zabbix Server、配置Proxy、部署Agent、访问Web界面和验证等。 需要注意的是,用户提到的Zabbix-Proxy在K8S内部,而Server在外部,但引用中也有例子是Server部署K8S内,所以可能需要说明两种方式,或者根据其中一个示例来展开。例如引用5中提到了zabbix-server的Pod运行在节点上,可能是指Server部署K8S集群内部,而Proxy可能作为中间组件。 另外,用户提供的示例回答中使用了代码块和引用标识,我需要确保在回答中正确引用,比如在步骤中引用相关的文献。例如,在部署Agent时引用文献4提到的官方镜像,或者在架构部分引用文献1和5。 可能还需要考虑存储的配置,比如数据库需要持久化存储,这涉及到PV和PVC的创建,但用户提供的引用中没有详细说明,可能需要一般性的指导,或者提醒用户根据自身环境调整。 最后,生成相关问题,需要围绕ZabbixK8S部署,比如优化配置、监控项管理、高可用方案、与Prometheus对比等,这些在引用中也有提到,比如用户提到已有Zabbix平台,不想用Prometheus,所以相关问题可以涉及两者的比较。 现在需要把这些点组织成一个连贯的教程,确保步骤正确,引用适当,并且语言清晰。同时,检查是否满足所有系统级指令,比如数学公式的正确使用(虽然这个问题可能不涉及太多数学内容,但如果有变量或代码,要正确格式化),以及引用标识的正确添加。</think>### 在 Kubernetes 上部署 Zabbix 监控系统的分步教程 #### 1. 环境准备 - **Kubernetes 版本要求**:需使用 v1.18.x 及以上,推荐 v1.25.x[^1]。 - **Zabbix 版本要求**:需使用 Zabbix 6.x 及以上[^1]。 - **存储准备**:为数据库和 Zabbix Server 配置持久化存储(如 NFS、Ceph 或云存储)。 #### 2. 创建命名空间 建议为 Zabbix 组件创建独立的命名空间: ```yaml apiVersion: v1 kind: Namespace metadata: name: zabbix ``` #### 3. 部署数据库(MySQL/MariaDB) Zabbix 依赖数据库存储监控数据。以下为 MySQL 部署示例: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: zabbix-mysql namespace: zabbix spec: replicas: 1 selector: matchLabels: app: zabbix-mysql template: metadata: labels: app: zabbix-mysql spec: containers: - name: mysql image: mysql:8.0 env: - name: MYSQL_ROOT_PASSWORD value: "your_password" volumeMounts: - name: mysql-storage mountPath: /var/lib/mysql volumes: - name: mysql-storage persistentVolumeClaim: claimName: mysql-pvc # 需提前创建 PVC ``` #### 4. 部署 Zabbix Server Zabbix Server 为核心组件,需连接数据库: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: zabbix-server namespace: zabbix spec: replicas: 1 selector: matchLabels: app: zabbix-server template: metadata: labels: app: zabbix-server spec: containers: - name: zabbix-server image: zabbix/zabbix-server-mysql:alpine-6.0-latest env: - name: DB_SERVER_HOST value: zabbix-mysql - name: MYSQL_ROOT_PASSWORD value: "your_password" ``` #### 5. 部署 Zabbix Web 界面 Web 界面提供可视化操作: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: zabbix-web namespace: zabbix 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:alpine-6.0-latest env: - name: DB_SERVER_HOST value: zabbix-mysql - name: ZBX_SERVER_HOST value: zabbix-server ``` #### 6. 配置 Zabbix Proxy(可选) 若需通过 Proxy 收集数据,可部署在集群内: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: zabbix-proxy namespace: zabbix spec: replicas: 1 template: spec: containers: - name: zabbix-proxy image: zabbix/zabbix-proxy-mysql:alpine-6.0-latest env: - name: ZBX_SERVER_HOST value: "external-zabbix-server-ip" # 外部 Zabbix Server 地址 ``` #### 7. 部署 Zabbix Agent 到 K8S 节点 每个节点需运行 Agent 以采集指标: ```yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: zabbix-agent namespace: zabbix spec: selector: matchLabels: app: zabbix-agent template: metadata: labels: app: zabbix-agent spec: containers: - name: zabbix-agent image: zabbix/zabbix-agent:alpine-6.0-latest # 使用官方镜像[^4] env: - name: ZBX_HOSTNAME valueFrom: fieldRef: fieldPath: spec.nodeName # 使用节点名作为主机名 - name: ZBX_SERVER_HOST value: "zabbix-proxy" # 或直接指向 Zabbix Server ``` #### 8. 验证部署 - 检查 Pod 状态: ```bash kubectl get pods -n zabbix # 预期输出类似: # zabbix-server-75cdd8865-rnxhx 2/2 Running 0 3m24s[^5] ``` - 访问 Web 界面:通过 `NodePort` 或 `Ingress` 暴露服务,默认账号/密码:`Admin/zabbix`。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值