K8S搭建zabbix

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: K8S搭建zabbix

一、检查本地k8s环境

1.检查系统pod运行状态

[root@k8s-master ~]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-7bc6547ffb-2nf66 1/1 Running 1 (9m28s ago)
2d16h
kube-system calico-node-8c4pn 1/1 Running 1 (9m16s ago) 2d16h
kube-system calico-node-f28qq 1/1 Running 1 (9m10s ago) 2d16h
kube-system calico-node-wmc2j 1/1 Running 1 (9m29s ago) 2d16h
kube-system coredns-6d8c4cb4d-6gm4x 1/1 Running 1 (9m28s ago) 2d16h
kube-system coredns-6d8c4cb4d-7vxlz 1/1 Running 1 (9m29s ago) 2d16h
kube-system etcd-k8s-master 1/1 Running 1 (9m30s ago) 2d16h
kube-system kube-apiserver-k8s-master 1/1 Running 1 (9m29s ago) 2d16h
kube-system kube-controller-manager-k8s-master 1/1 Running 1 (9m30s ago) 2d16h
kube-system kube-proxy-8dfw8 1/1 Running 1 (9m29s ago) 2d16h
kube-system kube-proxy-ghzrv 1/1 Running 1 (9m9s ago) 2d16h
kube-system kube-proxy-j867z 1/1 Running 1 (9m15s ago) 2d16h
kube-system kube-scheduler-k8s-master 1/1 Running 1 (9m28s ago) 2d16h

2.检查node节点状态

[root@k8s-master ~]# kubectl get nodes -owide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION
CONTAINER-RUNTIME
k8s-master Ready control-plane,master 2d16h v1.18.1 192.168.75.51 <none> CentOS
Linux 7 (Core) 3.10.0-957.el7.x86_64 containerd://1.6.6
k8s-node Ready <none> 2d16h v1.18.1 192.168.75.52 <none> CentOS Linux 7 (Core)
3.10.0-957.el7.x86_64 containerd://1.6.6

二、配置nfs共享存储

1.安装nfs

yum install -y nfs-utils

2.创建共享目录

mkdir -p /nfs/data

3.配置共享目录

echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exports

4.启动相关服务

systemctl enable rpcbindsystemctl enable nfs-serversystemctl start rpcbind

5.使配置生效

exportfs -r

6.查看nfs

[root@k8s-master ~]# exportfs
/nfs/data <world>

7.其他节点检查nfs共享

[root@k8s-node ~]# showmount -e 192.168.75.51
Export list for 192.168.75.51:/nfs/data *

三、安装zabbix-mysql

1.编写zabbix-mysqlyaml文件

[root@k8s-master zabbix]# cat zabbix_mysql.yaml
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: zabbixdb-pv
spec:
capacity: #创建存储的大小
storage: 10Gi
volumeMode: Filesystem #存储的类型
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
nfs:
path: /nfs/data/zabbix
server: 192.168.75.51
mountOptions:
- hard
- nfsvers=4.1
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: zabbixdb-pvc
namespace: zabbix
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem #存储类型 ,块存储Block
resources:
requests:
storage: 8Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: zabbixdb
name: zabbixdb
namespace: zabbix
spec:
replicas: 1
selector:
matchLabels:
app: zabbixdb
strategy: {}
template:
metadata:
labels:
app: zabbixdb
spec:
volumes:
- name: zabbixdb-data
persistentVolumeClaim:
claimName: zabbixdb-pvc
containers:
- image: mysql:8.0
name: mysql
ports:
- name: mysql
containerPort: 3306
protocol: TCP
volumeMounts:
- name: zabbixdb-data
mountPath: /var/lib/mysql
env:
- name: MYSQL_DATABASE
value: 'zabbix'
- name: MYSQL_USER
value: 'zabbix'
- name: MYSQL_PASSWORD
value: 'zabbix'
- name: MYSQL_ROOT_PASSWORD
value: 'zabbix'
resources:
requests:
cpu: 0.1
memory: 128Mi
limits:
cpu: 0.3
memory: 512Mi
---
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: zabbixdb
name: zabbixdb
namespace: zabbix
spec:
clusterIP: 10.96.
ports:
- name: 3306-3306
port: 3306
protocol: TCP
targetPort: 3306
selector:
app: zabbixdb
type: ClusterIP
status:
loadBalancer: {}

2、创建命名空间

[root@k8s-master zabbix]# kubectl create namespace zabbix
namespace/zabbix created

3.创建zabbix数据库

kubectl apply -f zabbix_mysql.yaml

4.检查pod状态

[root@k8s-master zabbix]# kubectl get pods -n zabbix
NAME READY STATUS RESTARTS AGE
zabbixdb-69b7cd8dff-jnpjd 1/1 Running 0 11m

四、检查zabbix数据库的service域名

1.运行测试pod

[root@k8s-master ~]# kubectl run busybox --image=busybox:1.28 -- sleep 3600
pod/busybox created

2.进入busyboxpod,查看域名解析

[root@k8s-master ~]# kubectl exec -it busybox -- /bin/sh
/ # nslookup zabbixdb.zabbix.svc.cluster.local
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: zabbixdb.zabbix.svc.cluster.local
Address 1: 10.96.1.99 zabbixdb.zabbix.svc.cluster.local
/ #

五、安装zabbix-server

1.编写zabbix_server.yaml文件

[root@k8s-master zabbix]# cat zabbix_server.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: zabbix-server
name: zabbix-server
namespace: zabbix
spec:
replicas: 1
selector:
matchLabels:
app: zabbix-server
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: zabbix-server
spec:
volumes:
- name: zabbix-scripts
hostPath:
path: /usr/lib/zabbix/
- name: zabbix-file
hostPath:
path: /var/lib/zabbix
nodeSelector:
zabbix-server: "true"
hostNetwork: true
containers:
- image: zabbix/zabbix-server-mysql:6.0-ubuntu-latest
name: zabbix-server-mysql
env:
- name: DB_SERVER_HOST
value: 10.96.1.99
- name: MYSQL_USER
value: zabbix
- name: MYSQL_PASSWORD
value: zabbix
resources: {}
status: {}

2.node节点打上标签

[root@k8s-master zabbix]# kubectl label nodes k8s-node zabbix-server=true
node/k8s-node labeled

3.安装zabbix-server

[root@k8s-master zabbix]# kubectl apply -f zabbix_server.yaml
deployment.apps/zabbix-server created

4.检查pod状态

[root@k8s-master zabbix]# kubectl get pods -n zabbix
NAME READY STATUS RESTARTS AGE
zabbix-server-5f48d9d57d-rkr5p 1/1 Running 0 66s
zabbixdb-69b7cd8dff-krt2w 1/1 Running 0 4m22s

六、部署zabbix-web

1.编写zabbix_web.yaml文件

[root@k8s-master zabbix]# cat zabbix_web.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: zabbix-web
name: zabbix-web
namespace: zabbix
spec:
replicas: 1
selector:
matchLabels:
app: zabbix-web
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: zabbix-web
spec:
containers:
- image: zabbix/zabbix-web-nginx-mysql:6.0-ubuntu-latest
name: zabbix-web-nginx-mysql
env:
- name: DB_SERVER_HOST
value: zabbixdb.zabbix.svc.cluster.local
- name: MYSQL_USER
value: zabbix
- name: MYSQL_PASSWORD
value: zabbix
- name: ZBX_SERVER_HOST
value: 192.168.75.51
- name: PHP_TZ
value: Asia/shanghai
resources: {}
status: {}
---
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: zabbix-web
name: zabbix-web
namespace: zabbix
spec:
ports:
- name: 8080-8080
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: zabbix-web
type: NodePort
status:
loadBalancer: {}

2.安装zabbix-web

[root@k8s-master zabbix]# kubectl apply -f zabbix_web.yaml
deployment.apps/zabbix-web create
dservice/zabbix-web created

3.查看pod状态

[root@k8s-master zabbix]# kubectl get pods -n zabbix
NAME READY STATUS RESTARTS AGE
zabbix-server-5f48d9d57d-rkr5p 1/1 Running 0 2m36s
zabbix-web-55cd66f74f-9f284 1/1 Running 0 18s
zabbixdb-69b7cd8dff-krt2w 1/1 Running 0 5m52s

七、部署zabbix-agent

1.编辑zabbix_agent.yaml

[root@k8s-master zabbix]# cat zabbix_agent.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app: zabbix-agent
name: zabbix-agent
namespace: zabbix
spec:
selector:
matchLabels:
app: zabbix-agent
template:
metadata:
creationTimestamp: null
labels:
app: zabbix-agent
spec:
hostNetwork: true
containers:
- image: zabbix/zabbix-agent:6.0-ubuntu-latest
name: zabbix-agent
env:
- name: ZBX_SERVER_HOST
value: 192.168.75.51
resources: {}

2.安装zabbix-agent

kubectl apply -f zabbix_agent.yaml

3.查看pod状态

[root@k8s-master zabbix]# kubectl get pods -n zabbix
NAME READY STATUS RESTARTS AGE
zabbix-agent-h2qwf 1/1 Running 0 3s
zabbix-agent-plnbd 1/1 Running 0 3s
zabbix-server-5f48d9d57d-rkr5p 1/1 Running 0 3m2s
zabbix-web-55cd66f74f-9f284 1/1 Running 0 44s
zabbixdb-69b7cd8dff-krt2w 1/1 Running 0 6m18s

八、访问zabbixweb

1.查看svc

[root@k8s-master zabbix]# kubectl get svc -n zabbix
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
zabbix-web NodePort 10.100.50.7 <none> 8080:30775/TCP 59s
zabbixdb ClusterIP 10.96.1.99 <none> 3306/TCP 6m33s

2.登录web

http://192.168.75.52:30775

3.登录zabbix

初始账号admin/zabbix

4.查询zabbix-server的监控项图表

image.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
监控 关系型数据库 MySQL
zabbix 简单介绍 及部署
zabbix 简单介绍 及部署
|
12月前
|
缓存 监控 前端开发
zabbix搭建
zabbix搭建
108 0
|
存储 监控 前端开发
zabbix 5.0部署
zabbix 5.0部署
262 1
|
监控 前端开发 安全
zabbix5.0部署(超级详细)
系统环境:CentOS-7-x86_64-Minimal-1708
391 1
zabbix5.0部署(超级详细)
|
监控 前端开发 数据可视化
【从零开始学zabbix】一丶Zabbix的介绍与部署Zabbix
大家好,docker篇完结之后苦思冥想了很久不知道做什么,看了一下感觉做监控方面文章并不多,于是过来撰写一下zabbix的文章,普罗米修斯的话要后面去了,zabbix也是很有意思的一个东西,如果你没有学过可以来跟着一起学一下,这个东西比较简单,可视化,学过的话可以当作复习来看一看,废话就不多说了,直接开始正题了。
338 0
【从零开始学zabbix】一丶Zabbix的介绍与部署Zabbix
|
存储 监控 前端开发
|
监控 Linux PHP
|
运维 监控 Linux
|
Web App开发 监控 关系型数据库
zabbix 实战部署
一、   zabbix简介 zabbix是完全开源的工具,整合了cacti和nagios等特性 附:SNMP(udp 161  udp 162) 众多网络工具都支持此协议,比如常见路由交换,常见OS 其既可以做管理端也可以做被管理端 snmp协议大致有3个版本分别是v1 v2 v3 无论是v1 和 v2 的安全性是比较差的,因为传输是明文的, V3的认证密码用MD5/SHA摘要算法加密。
1319 0
|
Web App开发 监控 关系型数据库
Zabbix部署
Zabbix框架   server端:zabbix-server zabbix-server-mysql zabbix-get web端:zabbix-web zabbix-web-mysql agent端:zabbix-sender zabbix-agent   前提: 配好本地yum源,以便安装时自动解决依赖 环境: server:192.
1182 0