本教程直接在 Kubernetes 1.13.3 版本上安裝 Prometheus 和 Grafana-7.5.2,至於它們的原理和概念就不再贅述,這裡就直接開始操作。
Git 下載相關 YAML 檔案
[root@k8s-master01 ~]# git clone [email protected]:MagicBinary/kubernetes-prometheus.git
部署 Prometheus 元件
官方文件:https://prometheus.io/docs/introduction/overview/
[root@k8s-master01 kubernetes-prometheus]# ls
grafana prometheus README.md
[root@k8s-master01 kubernetes-prometheus]# kubectl apply -f prometheus/
configmap/prometheus-config created
daemonset.extensions/node-exporter created
service/node-exporter created
deployment.apps/prometheus created
service/prometheus created
clusterrole.rbac.authorization.k8s.io/prometheus created
serviceaccount/prometheus created
clusterrolebinding.rbac.authorization.k8s.io/prometheus created
檢視 Pod 以及 SVC 狀態情況
[root@k8s-master01 kubernetes-prometheus]# kubectl get pod -n kube-system -o wide
[root@k8s-master01 kubernetes-prometheus]# kubectl get svc -n kube-system -o wide
瀏覽器訪問 node-exporter
http://任意節點 IP 地址:31672/metrics
瀏覽器訪問 Prometheus
http://任意節點 IP 地址:30003/targets
由於 YAML 檔案裡面指定映象版本為latest
,所以這裡都是拉取最新版本的
部署 Grafana 元件
官方文件:https://grafana.com/docs/grafana/latest/installation/kubernetes/
由於官方 YAML 中用到 K8s 持久化 PV 儲存,如果你的環境有儲存了,則不需要配置 NFS 儲存來實現,直接使用即可,我這裡的實驗環境是沒有儲存的,所以需要通過 NFS 來實現持久化儲存。
配置 NFS 儲存
所有節點都需要安裝 nfs
[root@k8s-master01 ~]# yum install -y nfs-common nfs-utils
拿 master 來作為 nfs-server,建立共享目錄
[root@k8s-master01 ~]# mkdir /nfsdata
授權共享目錄
[root@k8s-master01 ~]# chmod 666 /nfsdata
編輯 exports 檔案,使配置生效
[root@k8s-master01 ~]# cat /etc/exports
/nfsdata *(rw,no_root_squash,no_all_squash,sync)
啟動服務
[root@k8s-master01 ~]# systemctl start rpcbind
[root@k8s-master01 ~]# systemctl start nfs
在另一臺 Node 上掛載測試
[root@k8s-node01 ~]# mkdir /test
[root@k8s-node01 ~]# mount -t nfs 192.168.115.21:/nfsdata /test/
[root@k8s-node01 ~]# cd /test/
[root@k8s-node01 test]# date > test.txt
[root@k8s-node01 test]# cat test.txt
2021年 07月 19日 星期一 16:15:59 CST
測試完成,將其解除安裝
[root@k8s-node01 ~]# umount /test
構建 Grafana
建立 PV
[root@k8s-master01 grafana]# ls
grafana.yaml nfs-pv1.yaml
[root@k8s-master01 grafana]# kubectl apply -f nfs-pv1.yaml
persistentvolume/pv1 created
[root@k8s-master01 grafana]# kubectl get pv
建立 Grafana 元件
官方的 YAML 檔案需要修改兩個地方,如下所示。
[root@k8s-master01 grafana]# kubectl apply -f grafana.yaml
persistentvolumeclaim/grafana-pvc created
deployment.apps/grafana created
service/grafana created
故障排查
建立好了,發現 Pod 沒有 Running 狀態
檢視 Pod 的資訊,容器一直重啟失敗,網上說要在 YAML 檔案加 command 命令並不可靠
於是檢視 Pod 日誌發現了問題所在,看來是許可權問題
[root@k8s-master01 grafana]# kubectl log grafana-64b445bd65-tzgrx
log is DEPRECATED and will be removed in a future version. Use logs instead.
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
由於我的是實驗環境,所以 NFS 儲存目錄就直接給 777 許可權了,如果是生產環境不建議這樣操作
[root@k8s-master01 ~]# chmod 777 /nfsdata/
重啟構建一下 grafana
[root@k8s-master01 grafana]# kubectl delete -f grafana.yaml
[root@k8s-master01 grafana]# kubectl apply -f grafana.yaml
再次檢查 Grafana Pod 狀態,已經 running
檢視 svc 埠,就可以在瀏覽器訪問 Grafana
http://任意節點 IP 地址:31557
初始使用者密碼都是 admin;
到此就完成 Prometheus 和 Grafana 最新版本的部署,後續繼續更新新增監控 Node 具體操作。