[K8S] Zabbix 搭建

什么?还没有搭建k8s,那赶紧看看 [K8S] 认证集群搭建 吧

容器这么火,我也玩玩,搭个zabbix测试下

 

1、首先上传 zabbix 相关镜像至 harbor

# docker login 192.168.1.206    #登录仓库

Username (admin):

Password:

Login Succeeded

 

#docker search zabbix      #搜索下载镜像

# 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

 

重复以下步骤打tag并上传

# docker tagzabbix-web-nginx-mysql192.168.1.206/mzh/zabbix-web-nginx-mysql  

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

 

 

2、编辑yaml文件

# vimariadb-server.yaml

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

  name: mariadb-server

spec:

  replicas: 1

  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

        #- name: conf

        #  mountPath: /etc/mysql

      volumes:

      - name: db-nfs

        nfs:

          server: 192.168.1.206

          path: "/bak/mariadb-server"

     # - name: conf

     #   nfs:

     #     server: 192.168.1.206

     #     path: "/data/zabbix/server/mysql-conf"

 

# vimariadb-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  #先创建zabbixserver数据库

 

 

# vizabbix-server.yaml

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

  name: zabbix-server

spec:

  replicas: 1

  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"

        #volumeMounts:

        #- name: snmptraps-nfs

        #  mountPath: /var/lib/zabbix/snmptraps

      #volumes:

      #- name: snmptraps-nfs

      #  nfs:

      #    server: 192.168.1.206

      #    path: "/data/zabbix/server/snmptraps"

 

# vizabbix-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    #再创建zabbix server pod

 

# vizabbix-web.yaml

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

  name: zabbix-web

spec:

  replicas: 1

  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"

 

# vizabbix-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    #创建 zabbix -web pod

# kubectl get svc

zabbix-web      10.254.165.249   <nodes>       80:10158/TCP   26d

 

#通过浏览器访问http://192.168.1.207:10158 就可以访问zabbix了

 

#下面是设置 proxy代理

# vimariadb-proxy.yaml

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

  name: mariadb-proxy

spec:

  replicas: 1

  template:

    metadata:

      labels:

        app: mariadb-proxy

    spec:

      containers:

      - image: 192.168.1.206/mzh/mariadb

        name: mariadb-proxy

        ports:

        - containerPort: 3306

          name: db

          protocol: TCP

        env:

        - name: MYSQL_ROOT_PASSWORD

          value: "redhat"

        volumeMounts:

        - name: db-nfs

          mountPath: /var/lib/mysql

        #- name: conf

        #  mountPath: /etc/mysql

      volumes:

      - name: db-nfs

        nfs:

          server: 192.168.1.206

          path: "/bak/mariadb-proxy"

     # - name: conf

     #   nfs:

     #     server: 192.168.1.206

     #     path: "/data/zabbix/server/mysql-conf"

 

# vimariadb-proxy-svc.yaml

apiVersion: v1

kind: Service

metadata:

  name: mariadbproxy

  labels:

    app: mariadbproxy

spec:

  clusterIP: 10.254.0.4

  selector:

    app: mariadb-proxy

  ports:

  - name: db

    port: 3306

    protocol: TCP

 

#kubectl create -f mariadb-proxy.yaml -f mariadb-proxy-svc.yaml   #创建proxy数据库

 

#这里我本来是用 zabbix-proxy-mysql镜像来搭建proxy代理容器的,但是发现全部搭建完后,无法用来监控agent和获取数据,proxy容器内部无法访问外部?。

所以,如果你有足够的耐心看到这里,就会发现,我之前的yaml文件中有zabbixserver和mariadbproxy是给的固定CLUSTER-IP,分别为10.254.0.3  和10.254.0.4。

所以我决定将 proxy安装在 k8s集群任意物理节点上,在zabbix-proxy配置文件中用刚才的两个ip配置就OK了。

过程略,关于zabbix配置什么的参考【Zabbix】项  相关文档吧。

 

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

经过优化后,运维工作内容如下: ● 应用维护:作为自研WMS、ERP、OMS、SCM等系统的维护负责人,我负责管理和维护330多个虚拟机和容器中的微服务应用,通过监控和预警机制,及时发现并解决问题,保证了系统的高可用和稳定性,同时优化了系统的性能和安全性。 ● 监控管理:作为监控管理负责人,我负责Zabbix和Prometheus监控管理200台物理机和虚拟机以及k8s集群,对系统的tps、qps、响应时间和JVM上的线程数、死线程数、活跃线程数、GC耗时进行定制化监控,并通过飞书报警进行及时发现和处理故障,保证了系统的稳定性达到99.99%。 ● DevOps:作为DevOps负责人,我负责GitLab、Jenkins和JumpServer等工具的维护和管理,制定应用发布、回滚和灰度上线等流水线配置,实现了开发和运维工作的更加协同和高效,同时降低了部署成本和时间。 ● k8s容器维护:作为k8s容器维护负责人,我负责从零开始进行k8s集群的架构设计、搭建、维护和优化工作,提供了高可用、高性能和高稳定性的容器服务,同时对CNI插件和网络安全策略进行增强和优化,保证了系统的安全性和可靠性。 ● 运维开发:作为运维开发负责人,我负责Python+Ansible开发CMDB系统自动化管理平台,对200台服务器进行管理维护,同时通过Go对Prometheus exporter进行JVM线程数、死线程数、活跃线程数、GC耗时等监控项进行定制化二次开发,实现了自动化运维和监控,提高了工作效率和准确性,同时保证了系统的高可用和稳定性。 通过对运维工作内容的优化,突出了工作的关键点和亮点,同时更加精准地描述了工作的范围和内容,使得工作业绩更加突出和有说服力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值