在k8s中部署zabbix-server
背景:最近迷戀上helm,但是對helm特別陌生,寫這篇文章的時候主要是想學(xué)習(xí)一下helm的使用方式,因此,我在這里使用helm部署了一個zabbix-server和postgresql數(shù)據(jù)庫
整體思路:
- 使用helm部署zabbix-server
- 使用helm部署postgresql
- 部署zabbix-agent
步驟一: 先決條件準備
- Kubernetes集群1.10+
- helm3.0+
- 基礎(chǔ)架構(gòu)中的PV供應(yīng)商支持
- 安裝nfs(當然也可以是其他持久化存儲 如ceph 這里使用nfs)
nfs服務(wù)端192.168.100.158
操作
1.安關(guān)閉防火墻
systemctl stop firewalld
systemctl disable firewalld
2.安裝配置nfs
yum -y install nfs-utils rpcbind
\
- 創(chuàng)建共享目錄分配權(quán)限
mkdir -p /data/k8s/
vi /etc/exports
/data/k8s *(rw,sync,no_root_squash)
先啟動rpcbind
systemctl start rpcbind
systemctl enable rpcbind
systemctl status rpcbind
再啟動nfs
systemctl start nfs
systemctl enable nfs
systemctl status nfs
通過命令確認
rpcinfo -p|grep nfs
- 安裝helm3
(helm3有開箱即用的特性,只要放在$PATH
路徑下即可使用)過程略
- 使用helm部署后端是nfs存儲的
StorageClass
# 添加helm的repo源
helm repo add stable https://kubernetes-charts.storage.googleapis.com
# 把repo源中的nfs pull到本地編輯values.yaml文件
helm pull stable/nfs-client-provisioner --untar
# values.yaml文件如下:(按照你的環(huán)境改改就可以使用)
配置文件下載 https://nextcloud.k8s.fit/s/QwPsdxp26RzwLYa
# 文件準備完畢接下來安裝
helm install nfs -f values.yaml stable/nfs-client-provisioner
# 安裝完成后有可能pull不下來image,手動編輯nfs的控制器把image的TAG改為latest即可
[root@k8s-master zabbix]# kubectl get pod,sc
NAME READY STATUS RESTARTS AGE
pod/nfs-nfs-client-provisioner-9b7476bd-6lwcq 1/1 Running 0 5h51m
NAME PROVISIONER AGE
storageclass.storage.k8s.io/zabbix cluster.local/nfs-nfs-client-provisioner 5h52m
步驟二:部署zabbix-server和postgresql數(shù)據(jù)庫
# 添加repo源
helm repo add cetic https://cetic.github.io/helm-charts
把repo源中的zabbix pull到本地編輯values.yaml文件
helm pull cetic/zabbix --untar
# values.yaml文件如下:(按照你的環(huán)境改改就可以使用)
配置文件下載 https://nextcloud.k8s.fit/s/QwPsdxp26RzwLYa
# 修改子chart的values.yaml文件:(按照你的環(huán)境改改就可以使用)
cd charts/postgresql/
配置文件下載 https://nextcloud.k8s.fit/s/QwPsdxp26RzwLYa
步驟三:安裝zabbix-server和postgresql數(shù)據(jù)庫
[root@k8s-master zabbix]# helm install zabbix -f values.yaml ./
# 到這里zabbix-server和postgresql數(shù)據(jù)庫就安裝完成了
[root@k8s-master zabbix]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/ldap-ldap-self-service-67c5c77db4-kjhrt 1/1 Running 0 24h
pod/nfs-nfs-client-provisioner-9b7476bd-6lwcq 1/1 Running 0 6h13m
pod/zabbix-0 2/2 Running 0 137m
pod/zabbix-postgresql-0 1/1 Running 0 137m
pod/zabbix-web-77dd64df-j56jp 1/1 Running 2 137m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.244.64.1 <none> 443/TCP 9d
service/zabbix-agent ClusterIP 10.244.112.174 <none> 10050/TCP 137m
service/zabbix-postgresql ClusterIP 10.244.111.118 <none> 5432/TCP 137m
service/zabbix-postgresql-headless ClusterIP None <none> 5432/TCP 137m
service/zabbix-server NodePort 10.244.95.121 <none> 10051:30314/TCP,10052:32198/TCP 137m
service/zabbix-web NodePort 10.244.114.114 <none> 80:31956/TCP 137m
# 注意要把service/zabbix-server的type換成NodePort,最好是一個固定的端口(這一步是在為zabbix-agent做準備)
步驟四:安裝zabbix-agent
說明:我之前在這里也很懵,不知道該怎么去實現(xiàn)監(jiān)控,經(jīng)過這一次踩坑,我總結(jié)如下:
監(jiān)控node節(jié)點:此時zabbix-server已經(jīng)部署在k8s里了,可以通過ds控制器來部署zabbix-agent來監(jiān)控各個node節(jié)點饿自。
監(jiān)控虛擬機:可以使用docker跑一個zabbix-agent來完成監(jiān)控,或者直接yum install zabbix-agent
我這里選擇直接yum安裝了
# 被監(jiān)控機器操作
yum -y install http://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
yum -y install zabbix-agent
- 修改配置文件
vim /etc/zabbix/zabbix_agentd.conf
# 這里只改3個地方
Server=192.168.100.150
ServerActive=192.168.100.150:30314
Hostname=ansible1
systemctl restart zabbix-agent
接下來回到zabbix圖形化界面配置好被監(jiān)控的機器就可以看到監(jiān)控圖了。
總結(jié):
這篇文章寫得比較潦草,沒有過多講解,更多的需要自己去研究配置文件腺逛。上面這種方式只是把zabbix-server和postgresql數(shù)據(jù)庫進行容器化了,而zabbix-agent我選擇的還是yum方式直接安裝的,當然你可以使用docker跑一個zabbix-agent