k8s部署zabbix_k8s部署zabbix监控系统

zabbix简介

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.创建pvvim mysql-pv.yamlkind: 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.yamlapiVersion: 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.yamlapiVersion: v1

kind: Secret

metadata:

name: mysql-user-pwd

data:

mysql-root-pwd: cGFzc3dvcmQ=

4.创建mysql部署文件vim mysql-deploy.yamlapiVersion: 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-servervim zabbix-server-deploy.yamlapiVersion: 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-webvim zabbix-web.yamlapiVersion: 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-01              

pod/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)