您好,登錄后才能下訂單哦!
博文大綱:
一、部署dashboard的Web-UI界面
二、部署weave-scope監控k8s集群
三、部署Prometheus服務
#下載github上的項目(github搜索dashboard即可找到該項目)
[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.0/src/deploy/recommended/kubernetes-dashboard.yaml
[root@master ~]# vim kubernetes-dashboard.yaml
#跳轉至112行,修改其指定的鏡像,修改如下:
image: registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.0
#默認指定的是Google的鏡像,國外的下載不下來,所以要改為國內阿里云的
#跳轉到150行,修改其對應的service,將其類型配置為NodePort,修改如下:
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort #添加類型為NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30230 #映射到宿主機的端口為30230
selector:
k8s-app: kubernetes-dashboard
#修改完成后,保存退出即可
[root@master ~]# kubectl apply -f kubernetes-dashboard.yaml #執行yaml文件
[root@master ~]# kubectl get pod -n kube-system | grep dashboard #確認其正常運行
kubernetes-dashboard-6cfb7d8f54-l6jgj 1/1 Running 0 88s
必須要用火狐瀏覽器,Google和默認的edge都無法訪問。
1)訪問https://192.168.20.6:30230 ,(192.168.20.6是我這里master的IP,實際上訪問群集內的任意節點IP+30230端口都可以),然后點擊如下:
2)在終端創建用戶并查看登錄令牌:
[root@master ~]# kubectl create serviceaccount dashboard-admin -n kube-system #創建dashboard管理用戶
#綁定用戶為集群的管理員
[root@master ~]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
[root@master ~]# kubectl get secrets -n kube-system | grep dashboard-admin #獲取剛剛創建的用戶的token
dashboard-admin-token-97g76 kubernetes.io/service-account-token 3 15s
[root@master ~]# kubectl describe secrets -n kube-system dashboard-admin-token-97g76
#注意:上面的最后一段取決于上面查看到的用戶的secrets名字。
Name: dashboard-admin-token-97g76
Namespace: kube-system
..................#省略部分內容
Data
====
token: #將該token字段后面的值復制下來
3)將token值粘貼到下面:
4)至此,即可在web界面進行監控群集節點的信息,及創建資源對象(一般不會在這上面進行創建資源對象):
這個服務的yaml文件在github上不太容易找到,還是附上找這個鏈接的過程吧!如下:
1、github搜索“scope”,然后點擊如下:
2、進入后,下拉頁面,點擊“kubernetes”,如下:
3、進入后,再次下拉頁面:
4、將獲得的鏈接下載:
[root@master ~]# wget https://cloud.weave.works/k8s/scope.yaml
5、修改下載的yaml文件并運行:
[root@master ~]# vim scope.yaml #編輯yaml文件
#跳轉至197行,修改其service的端口類型
spec:
type: NodePort #修改類型為NodePort
ports:
- name: app
port: 80
protocol: TCP
targetPort: 4040
nodePort: 30231 #映射到宿主的端口為30231
[root@master ~]# kubectl apply -f scope.yaml #執行yaml文件
#查看容器的運行情況,確定處于正常運行
[root@master ~]# kubectl get pod -o wide -n weave #默認在weave名稱空間
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
weave-scope-agent-b4dwz 1/1 Running 0 73s 192.168.20.8 node02 <none> <none>
weave-scope-agent-lksqh 1/1 Running 0 73s 192.168.20.7 node01 <none> <none>
weave-scope-agent-mv6mj 1/1 Running 0 73s 192.168.20.6 master <none> <none>
weave-scope-app-78cff98cbc-kxp9v 1/1 Running 0 73s 10.244.2.2 node02 <none> <none>
weave-scope-cluster-agent-7cc889fbbf-ngf8j 1/1 Running 0 73s 10.244.1.3 node01 <none> <none>
#DaemonSet資源對象:weave-scope-agent(代理):負責收集節點的信息;
#deployment資源對象:weave-scope-app(應用):從agent獲取數據,通過web UI展示并與用戶交互;
#DaemonSet資源對象的特性和deployment相比,就是DaemonSet資源對象會在每個節點上都運行且只能運行一個pod。
#由于每個節點都需要監控,所以用到了DaemonSet這種資源對象
6、瀏覽器訪問群集的映射端口30231,如下:
在scope的web界面中,可以查看很多的東西,pod、node節點等詳細信息,包括打開容器的終端,查看其日志信息等等......
在部署之前,先來了解一下Prometheus各個組件的作用吧!
- MertricServer:是k8s集群資源使用情況的聚合器,收集數據給K8s集群內使用,如:kubectl,hpa,scheduler
- PrometheusOperator:是一個系統檢測和警報工具箱,用來存儲監控數據;
- NodeExporter:用于各node的關鍵度量指標狀態數據;
- kubeStateMetrics:收集k8s集群內資源對象數據,指定告警規則;
- Prometheus:采用pull方式收集apiserver,scheduler,controller-manager,kubelet組件數據,通過http協議傳輸;
- Grafana:是可視化數據統計和監控平臺。
1、在開始前,需要先刪除前兩個監控平臺,要不太消耗系統資源了,如下:
[root@master ~]# kubectl delete -f scope.yaml
[root@master ~]# kubectl delete -f kubernetes-dashboard.yaml
2、下載prometheus所需文件:
[root@master ~]# mkdir prometheus
[root@master ~]# cd prometheus/
[root@master prometheus]# yum -y install git #安裝git命令
#克隆遠端github庫
[root@master prometheus]# git clone https://github.com/coreos/kube-prometheus.git
[root@master prometheus]# cd kube-prometheus/manifests/ #進入克隆下的目錄
3、修改各個組件service的yaml文件
[root@master manifests]# vim grafana-service.yaml #修改grafana的yaml文件
apiVersion: v1
kind: Service
metadata:
labels:
app: grafana
name: grafana
namespace: monitoring
spec:
type: NodePort #改為NodePort類型
ports:
- name: http
port: 3000
targetPort: http
nodePort: 30100 #映射到宿主機30100端口
selector:
app: grafana
[root@master manifests]# vim prometheus-service.yaml #修改prometheus的yaml文件
apiVersion: v1
kind: Service
metadata:
labels:
prometheus: k8s
name: prometheus-k8s
namespace: monitoring
spec:
type: NodePort #改為NodePort類型
ports:
- name: web
port: 9090
targetPort: web
nodePort: 30200 #映射到宿主機30200端口
selector:
app: prometheus
prometheus: k8s
sessionAffinity: ClientIP
[root@master manifests]# vim alertmanager-service.yaml #修改alertmanager的yaml文件
apiVersion: v1
kind: Service
metadata:
labels:
alertmanager: main
name: alertmanager-main
namespace: monitoring
spec:
type: NodePort #改為NodePort類型
ports:
- name: web
port: 9093
targetPort: web
nodePort: 30300 #映射到宿主機30300端口
selector:
alertmanager: main
app: alertmanager
sessionAffinity: ClientIP
4、執行yaml文件
當執行以下yaml文件時,每個節點會在互聯網上下載很多鏡像,為了防止下載鏡像的時間過長,可以先將我提供的鏡像下載到本地,然后導入至各個節點,然后在執行下面的yaml文件,將會省些時間。(如果下載我提供的鏡像,建議寫個導入鏡像的腳本進行導入操作,避免手動導入,造成錯誤)
腳本示例如下:
[root@master ~]# vim a.sh #腳本如下
#!/bin/bash
cd /root/image #這個目錄下存放的只有我網盤中的鏡像
for i in `ls /root/image/`
do
docker load < ${i}
done
[root@master ~]# sh a.sh #執行腳本即可
#必須先執行setup目錄下的所有yaml文件,如下:
[root@master manifests]# pwd #確定當前路徑
/root/prometheus/kube-prometheus/manifests
[root@master manifests]# kubectl apply -f setup/ #執行setup目錄下的所有yaml文件
#再執行manifests目錄下的yaml文件
[root@master manifests]# cd .. #返回到上一級目錄
[root@master kube-prometheus]# kubectl apply -f manifests/ #執行yaml文件
[root@master kube-prometheus]# kubectl get pod -n monitoring #確認所有pod正常運行
#如果是選擇在線下載鏡像,那么可能要半個小時左右才可以正常運行
5、客戶端訪問群集中任意節點的IP+30100端口,即可看到以下界面(默認用戶名和密碼都是admin):
根據提示更改密碼:
添加模板:
依次點擊“import”進行導入下面三個模板:
進行以下點擊,即可查看群集內的監控狀態:
———————— 本文至此結束,感謝閱讀 ————————
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。