k8s部署zabbix监控系统
zabbix简介
十多年的噶尔网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整噶尔建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“噶尔网站设计”,“噶尔网站推广”以来,每个客户项目都认真落实执行。
Zabbix 是一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。Zabbix 使用 MySQL、PostgreSQL、SQLite、Oracle 或 IBM DB2 储存资料。Server 端基于 C语言、Web 前端则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP 等各种协定做死活监视。在客户端如 UNIX、Windows 中安装 Zabbix Agent 之后,可监视 CPU 负荷、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、TCP、ICMP检查,以及利用 IPMI、SSH、telnet 对目标进行监视。另外,Zabbix 包含 XMPP 等各种 Item 警示功能。
zabbix特性
安装部署简单
web可视化管理界面
开源
分布式
实时绘图
实验环境
Kubernetes版本1.16.0
zabbix版本4.4.5(官方镜像)
mysql版本8.0.19(官方镜像)
zabbix k8s部署
部署mysql(采用hostpath做数据持久化)
1.创建pv
vim mysql-pv.yaml
kind: PersistentVolume apiVersion: v1 metadata: name: mysql-pv-volume labels: type: local spec: storageClassName: manual capacity: storage: 20Gi accessModes: - ReadWriteOnce hostPath: path: "/mnt/data" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 20Gi
2.创建mysql配置文件(configMap)
vim mysql-config.yaml
apiVersion: v1 kind: ConfigMap metadata: name: mysql-config data: custom.cnf: | [mysqld] default_storage_engine=innodb skip_external_locking skip_host_cache skip_name_resolve default_authentication_plugin=mysql_native_password
3.创建mysql密码(secret)
[root@k8s-master-01 mysql]# echo -n password|base64 cGFzc3dvcmQ= vim mysql-secret.yaml
apiVersion: v1 kind: Secret metadata: name: mysql-user-pwd data: mysql-root-pwd: cGFzc3dvcmQ=
4.创建mysql部署文件
vim mysql-deploy.yaml
apiVersion: v1 kind: Service metadata: name: mysql spec: type: NodePort ports: - port: 3306 nodePort: 30006 protocol: TCP targetPort: 3306 selector: app: mysql --- 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 name: mysql imagePullPolicy: IfNotPresent env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-user-pwd key: mysql-root-pwd ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-config mountPath: /etc/mysql/conf.d/ - name: mysql-persistent-storage mountPath: /var/lib/mysql - name: timezone mountPath: /etc/localtime volumes: - name: mysql-config configMap: name: mysql-config - name: timezone hostPath: path: /usr/share/zoneinfo/Asia/Shanghai - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim
5.使用kubectl命令及以上yaml文件部署mysql
[root@k8s-master-01 mysql]# kubectl apply -f ./ configmap/mysql-config created service/mysql created deployment.apps/mysql created persistentvolume/mysql-pv-volume created persistentvolumeclaim/mysql-pv-claim created secret/mysql-user-pwd created
部署zabbix-server
vim zabbix-server-deploy.yaml
apiVersion: v1 kind: Service metadata: name: zabbixserver spec: type: NodePort ports: - port: 10051 nodePort: 30051 protocol: TCP targetPort: 10051 selector: app: zabbix-server --- 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: ZBX_CACHESIZE value: "1024M" - name: ZBX_TRENDCACHESIZE value: "1024M" - name: ZBX_HISTORYCACHESIZE value: "2048M" - name: ZBX_HISTORYINDEXCACHESIZE value: "1024M" - name: ZBX_STARTTRAPPERS value: "5" - name: ZBX_STARTPREPROCESSORS value: "10" - name: ZBX_STARTDBSYNCERS value: "10" - name: DB_SERVER_PORT value: "3306" - name: zabbix-agent image: zabbix/zabbix-agent imagePullPolicy: Always ports: - containerPort: 10050 name: zabbix-agent env: - name: ZBX_HOSTNAME value: "Zabbix server" - name: ZBX_SERVER_HOST value: "127.0.0.1" - name: ZBX_PASSIVE_ALLOW value: "true" - name: ZBX_STARTAGENTS value: "3" - name: ZBX_TIMEOUT value: "10" securityContext: privileged: true
部署zabbix-web
vim zabbix-web.yaml
apiVersion: v1 kind: Service metadata: name: zabbix-web spec: type: NodePort ports: - port: 80 protocol: TCP nodePort: 30080 targetPort: 80 selector: app: zabbix-web --- 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"
使用kubectl命令及以上yaml文件部署
[root@k8s-master-01 zabbix]# kubectl apply -f ./ service/zabbixserver created deployment.apps/zabbix-server created service/zabbix-web created deployment.apps/zabbix-web created
查看部署的组件状态
[root@k8s-master-01 zabbix]# kubectl get deploy,pod,svc,cm,secret,pv,pvc -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR deployment.apps/mysql 1/1 1 1 15m mysql mysql app=mysql deployment.apps/zabbix-server 1/1 1 1 3m23s zabbix-server,zabbix-agent zabbix/zabbix-server-mysql,zabbix/zabbix-agent app=zabbix-server deployment.apps/zabbix-web 2/2 2 2 3m23s zabbix-web zabbix/zabbix-web-nginx-mysql app=zabbix-web NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod/mysql-ffcc44677-g2tlr 1/1 Running 0 15m 10.244.0.126 k8s-node-01pod/zabbix-server-75cdd8865-rnxhx 2/2 Running 0 3m24s 10.244.0.127 k8s-node-01 pod/zabbix-web-856989975-8k45c 1/1 Running 0 3m23s 10.244.0.128 k8s-node-01 pod/zabbix-web-856989975-hxdfl 1/1 Running 0 3m24s 10.244.1.118 k8s-node-02 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR service/kubernetes ClusterIP 10.0.0.1 443/TCP 88d service/mysql NodePort 10.0.0.15 3306:30006/TCP 15m app=mysql service/zabbix-web NodePort 10.0.0.189 80:30080/TCP 3m23s app=zabbix-web service/zabbixserver NodePort 10.0.0.234 10051:30051/TCP 3m23s app=zabbix-server NAME DATA AGE configmap/mysql-config 1 15m NAME TYPE DATA AGE secret/default-token-7qhlz kubernetes.io/service-account-token 3 88d secret/mysql-user-pwd Opaque 1 15m secret/tls-secret kubernetes.io/tls 2 61d NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE VOLUMEMODE persistentvolume/mysql-pv-volume 20Gi RWO Retain Bound default/mysql-pv-claim manual 15m Filesystem NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE VOLUMEMODE persistentvolumeclaim/mysql-pv-claim Bound mysql-pv-volume 20Gi RWO manual 15m Filesystem
通过浏览器访问测试
浏览器地址栏输入任意node节点的ip:30080
输入用户名及密码访问
默认用户:Admin 默认密码:zabbix
至此k8s部署zabbix-server测试完成。
本文暂不展开说明k8s基础环境部署,后期再专门就k8s基础环境部署做专门说明。
文章题目:k8s部署zabbix监控系统
转载注明:http://pwwzsj.com/article/jggjge.html