//github搜索dashboard找到該項目node
//下載yaml文件 [root@docker-k8s01 ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml //編輯yaml文件 [root@docker-k8s01 ~]# vim recommended.yaml //跳轉到40行左右,修改其對應的service,類型配置爲Nodeport kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type: NodePort //添加類型爲NodePort ports: - port: 443 targetPort: 8443 nodePort: 31010 //映射到宿主機的端口爲31010 selector: k8s-app: kubernetes-dashboard //執行yaml文件 [root@docker-k8s01 ~]# kubectl apply -f recommended.yaml //查看Pod是否運行 [root@docker-k8s01 ~]# kubectl get pod -n kubernetes-dashboard //查看其詳細信息 [root@docker-k8s01 ~]# kubectl describe pod -n kubernetes-dashboard dashboard-metrics-scraper-76679bc5b9-sbcvw //確保該yaml文件提供的pod都正常運行 [root@docker-k8s01 ~]# kubectl get svc -n kubernetes-dashboard NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dashboard-metrics-scraper ClusterIP 10.103.65.117 <none> 8000/TCP 3m3s kubernetes-dashboard NodePort 10.110.154.42 <none> 443:31010/TCP 3m3s
//這裏使用的dashboard版本較高,相較於以前的版本訪問必須使用火狐瀏覽器,這裏不須要。git
訪問https://192.168.171.151:31010(訪問集羣內的任意節點IP均可以)
github
//建立dashboard的管理用戶 [root@docker-k8s01 ~]# kubectl create serviceaccount dashboard-admin -n kube-system //綁定用戶爲集羣的管理員 [root@docker-k8s01 ~]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin //獲取剛剛建立的用戶Token [root@docker-k8s01 ~]# kubectl get secrets -n kube-system | grep dashboard-admin dashboard-admin-token-zbdqm kubernetes.io/service-account-token 3 63s [root@docker-k8s01 ~]# kubectl describe secrets -n kube-system dashboard-admin-token-zbdqm //注意:上面的最後一段取決於上面查看到的用戶的secrets名字。 Name: dashboard-admin-token-zbdqm Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name: dashboard-admin kubernetes.io/service-account.uid: e9716e34-581a-4c30-b601-0a2a254d4a26 Type: kubernetes.io/service-account-token Data ==== namespace: 11 bytes token: //將token字段後面的值複製下來,以下圖
將Token值粘貼到下面
//至此,就能夠在web界面進行監控羣集節點的信息,及建立資源對象web
注:通常不會在這上面進行建立資源對象docker
方法二json
//查看剛纔建立的token [root@master ~]# kubectl get secrets -n kube-system | grep dashboard dashboard-admin-token-22n2v kubernetes.io/service-account-token 3 11m //查看token的詳細信息,會獲取token [root@master ~]# kubectl describe secrets -n kube-system dashboard-admin-token-22n2v //將token的信息生成一個變量 [root@master ~]# DASH_TOKEN=$(kubectl get secrets -n kube-system dashboard-admin-token-22n2v -o jsonpath={.data.token} | base64 -d) //將k8s集羣的配置信息寫入到一個文件中,文件可自定義 [root@master ~]# kubectl config set-cluster kubernets --server=192.168.10.52:6443 --kubeconfig=/root/.dashboard-admin.conf Cluster "kubernets" set. //將token的信息也寫入到文件中(同一個文件) [root@master ~]# kubectl config set-credentials dashboard-admin --token=${DASH_TOKEN} --kubeconfig=/root/.dashboard-admin.conf User "dashboard-admin" set. //用戶信息也寫入文件中(同一個文件) [root@master ~]# kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/.dashboard-admin.conf Context "dashboard-admin@kubernetes" created. //將上下文的配置信息也寫入文件中(同一個文件) [root@master ~]# kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/.dashboard-admin.conf Switched to context "dashboard-admin@kubernetes". //最後將配置信息導入到客戶端本地 [root@master ~]# sz /root/.dashboard-admin.conf
//將文件導出後,仍是登陸到剛剛輸入Token的界面,選擇kubeconfig,而後將剛纔導出的文件上傳至此點擊登陸便可。vim
本人較懶,這裏我就不配圖了,見諒。api
//github上搜索「scope」瀏覽器
//下拉頁面,點擊kubernetessession
//進入到新頁面後再次下拉
//將得到的連接下載 [root@docker-k8s01 ~]# wget https://cloud.weave.works/k8s/scope.yaml //修改yaml文件 [root@docker-k8s01 ~]# vim scope.yaml //跳轉到大概197行左右,修改其service的端口類型 spec: type: NodePort //類型爲NodePort ports: - name: app port: 80 protocol: TCP targetPort: 4040 nodePort: 30123 //配置映射到宿主機的端口 [root@docker-k8s01 ~]# kubectl apply -f scope.yaml //查看容器的運行狀況 [root@docker-k8s01 ~]# kubectl get pod -o wide -n weave NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES weave-scope-agent-9vj2w 1/1 Running 0 119s 192.168.171.151 docker-k8s01 <none> <none> weave-scope-agent-h4gt6 1/1 Running 0 119s 192.168.171.152 docker-k8s03 <none> <none> weave-scope-agent-lqzbq 1/1 Running 0 119s 192.168.171.150 docker-k8s02 <none> <none> weave-scope-app-b965dccb7-ph6zg 1/1 Running 0 119s 10.244.1.3 docker-k8s02 <none> <none> weave-scope-cluster-agent-6598584d8-h8b9q 1/1 Running 0 119s 10.244.2.3 docker-k8s03 <none> <none> //DaemonSet資源對象:weave-scope-agent(代理):負責收集節點的信息; //deployment資源對象:weave-scope-app(應用):從agent獲取數據,經過web UI展現並與用戶交互; //DaemonSet資源對象的特性和deployment相比,就是DaemonSet資源對象會在每一個節點上都運行且只能運行一個pod。 //因爲每一個節點都須要監控,因此用到了DaemonSet這種資源對象
//訪問羣集的映射端口30123
//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:是可視化數據統計和監控平臺。
//github上搜索prometheus,獲取到git下載連接
//安裝git命令 [root@docker-k8s01 ~]# yum -y install git //建立目錄(可忽略) [root@docker-k8s01 ~]# mkdir prometheus [root@docker-k8s01 ~]# cd prometheus/ //克隆github庫 [root@docker-k8s01 prometheus]# git clone https://github.com/imirsh/kube-prometheus.git //進入到克隆目錄 [root@docker-k8s01 prometheus]# cd kube-prometheus/manifests/
//修改grafana的yaml文件 [root@docker-k8s01 manifests]# cat grafana-service.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: 30333 //映射端口爲30333 selector: app: grafana //修改prometheus的yaml文件 [root@docker-k8s01 manifests]# cat prometheus-service.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: 30444 //映射端口爲30444 selector: app: prometheus prometheus: k8s sessionAffinity: ClientIP //修改alertmanager的yaml文件 [root@docker-k8s01 manifests]# cat alertmanager-service.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: 30555 //映射端口爲30555 selector: alertmanager: main app: alertmanager sessionAffinity: ClientIP
//肯定當前路徑 [root@docker-k8s01 manifests]# pwd /root/prometheus/kube-prometheus/manifests //執行setup目錄下的全部yaml文件,記住是全部! [root@docker-k8s01 manifests]# kubectl apply -f setup/ //建議多執行幾回,由於目錄下的yaml文件太多,可能執行的時候可能會落下一兩個沒有執行 [root@docker-k8s01 manifests]# cd .. //返回上級目錄 [root@docker-k8s01 kube-prometheus]# pwd /root/prometheus/kube-prometheus //執行該目錄下的全部yaml [root@docker-k8s01 kube-prometheus]# kubectl apply -f manifests/ //確保全部pod都正常運行 [root@docker-k8s01 kube-prometheus]# kubectl get pod -n monitoring -w
當執行如下yaml文件時,每一個節點會在互聯網上下載不少鏡像,爲了防止下載鏡像的時間過長,能夠先將鏡像下載到本地,而後導入至各個節點,而後在執行yaml文件,將會省些時間。
//添加模板
//依次點擊「import」進行導入下面三個模板
固然,也能夠到grafana網站尋找合適的模板進行下載,這裏我就不詳細介紹怎麼添加模板了。