前言:
之前安装过k8s集群了,dashboard也有了,但是dashboard只能看k8s的一些内容,主机整体情况知悉还是很少的,那么我们是不是可以在原有集群基础上部署一套监控自身集群节点机器呢?答案是:有,哈哈,那就是大名鼎鼎的Zabbix。大家有兴趣可以去深入了解一下,我这里就不多讲了。我主要是把我自己如何在k8s集群上部署zabbix以及添加除已运行了server和agent的worker节点外的其他节点进行监控。
步入正题:
1.在已有的k8s集群上部署zabbix监控服务,我们需要准备部署文件yaml。
zabbix yaml文件地址:https://github.com/monitoringartist/kubernetes-zabbix/blob/master/zabbix-all-in-one-bare-metal.yaml
在配置好的客户端或者master节点上执行如下命令:
[root@master00 ~]# kubectl create -f zabbix-all-in-one-bare-metal.yaml
service/zabbix-web created
service/zabbix-db created
service/zabbix-server created
replicationcontroller/zabbix-web created
replicationcontroller/zabbix-db created
replicationcontroller/zabbix-server created
[root@master00 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
zabbix-db-pxbgb 0/1 ContainerCreating 0 7s
zabbix-server-bgbdn 0/1 ContainerCreating 0 7s
zabbix-web-27nhm 0/1 ContainerCreating 0 7s
zabbix-web-v27j8 0/1 ContainerCreating 0 7s
zabbix-web-w9bnx 0/1 ContainerCreating 0 7s
[root@master00 ~]#
2.部署好了如何访问呢?我们可以再次创建ingress。
zabbix ingress yaml文件地址:https://github.com/monitoringartist/kubernetes-zabbix/blob/master/ingress.yaml
里面要改zabbix.local为自己的配置域名,我的是http://zabbix.k8s.xxx.com,我前面文章部署dashboard的时候也提到过类似步骤,大家可以参考下。
kubectl apply -f ingress.yaml
好了,等个几分钟吧,镜像是从docker hub拉取的,可能需要些时间,根据大家自己的网络速度来定!
3.检查部署情况。
[root@master00 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
zabbix-db-pxbgb 1/1 Running 0 4m48s 10.244.4.18 worker01.k8s-copy.xxxxxxx.com <none> <none>
zabbix-server-bgbdn 1/1 Running 0 4m48s 10.244.4.19 worker01.k8s-copy.xxxxxxx.com <none> <none>
zabbix-web-27nhm 1/1 Running 0 4m48s 10.244.5.24 worker02.k8s-copy.xxxxxxx.com <none> <none>
zabbix-web-v27j8 1/1 Running 0 4m48s 10.244.4.17 worker01.k8s-copy.hz-soft.com <none> <none>
zabbix-web-w9bnx 1/1 Running 0 4m48s 10.244.3.12 worker00.k8s-copy.xxxxxxx.com <none> <none>
[root@master00 ~]#
从上面结果看,我们的zabbix-server运行在了worker01节点,那么这个节点我们可以到时候忽略agent的安装,因为他本身就有了,只是在worker01节点宿主机我们看不到端口而已。实际上还是监控了当前运行节点的。
4.访问zabbix web界面。
浏览器访问 http://zabbix.k8s.xxx.com
用户名:admin
密 码:zabbix
大家可以点画面上右上角的小人头选择下语言设置为中文。
接下来创建主机
在添加之前我们需要在除worker01节点的其他节点安装zabbix-agent。
添加zabbix官方yum源安装agent:
cat << EOF > /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - \$basearch
baseurl=http://repo.zabbix.com/zabbix/3.2/rhel/7/\$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
EOF
yum clean all && yum makecache && yum -y install zabbix-agent-3.2.7-1.el7.x86_64
我们需要知道worker节点宿主机ip以及内部运行的zabbix-server pod所在内部ip。
修改配置文件:/etc/zabbix/zabbix_agentd.conf
worker01节点宿主机ip配置Server属性后面
例如我的是 Server=127.0.0.1,172.16.0.81
[root@master00 ~]# sed -i s#Server=127.0.0.1#Server=127.0.0.1,172.16.0.81#g /etc/zabbix/zabbix_agentd.conf
zabbix-server pod内部ip配置ActiveServer属性后面
获取ip命令,在master节点执行:
[root@master00 ~]# kubectl get pods -o wide|grep server|awk '{print $6}'
10.244.4.19
例如我的是 ServerActive=10.244.4.19:10051
[root@master00 ~]# sed -i s#ServerActive=127.0.0.1#ServerActive=10.244.4.19:10051#g /etc/zabbix/zabbix_agentd.conf
接下来配置好就开始启动吧。日志显示如下则成功!启动agent服务之前记得把默认的host启用哦。
[root@master00 ~]# systemctl enable zabbix-agent --now
[root@master00 ~]# tail -f /var/log/zabbix/zabbix_agentd.log
21178:20200813:214201.872 IPv6 support: YES
21178:20200813:214201.872 TLS support: YES
21178:20200813:214201.872 **************************
21178:20200813:214201.872 using configuration file: /etc/zabbix/zabbix_agentd.conf
21178:20200813:214201.872 agent #0 started [main process]
21179:20200813:214201.872 agent #1 started [collector]
21180:20200813:214201.872 agent #2 started [listener #1]
21181:20200813:214201.872 agent #3 started [listener #2]
21183:20200813:214201.873 agent #5 started [active checks #1]
21182:20200813:214201.873 agent #4 started [listener #3]
OK,我们加入这台master00节点到主机列表看看吧。
上面我讲到如何创建主机,继续下一步!
上面我标记红色框框必须填写哦。最重要的是ip地址。也就是master00宿主机ip。
然后我们在点击模版,在输入框输入关键字os,选择Template OS Linux。
记住先点击最上面那个添加,然后再点击下面那个添加按钮。
大家可以看到添加成功了,但是ZBX可用性没有亮,底下那个亮了,今天我也在思考这个问题,于是再刷新看看就好了。 给它点时间哦!
OK。其他节点步骤都一样!有问题大家在后面评论区进行评论吧。