玩玩kubernetes dashboard可視化界面吧


1 前言

      管理kubernentes集群時,總是需要登陸機器命令行查看,難免有時候顯得繁瑣。那么有沒有一種可視化的更方便管理kubernente的工具呢,這樣更方便的全局查看整個集群的各種資源。
目前用的比較多的是Kubernetes DashBoard和Rancher,其中Kubernentes-DashBoard是kubernentes官方提供的Web UI,Rancher是第三方開發的。當然也有很多公司會根據自己的實際需求,通過kubernentes提供的api接口開發適合自己的可視化管理界面。
用戶可以通過可視化界面對Kubernetes集群中部署的應用進行問題處理和管理,查看集群中應用的運行情況,同時創建或修改部署、任務、服務等Kubernetes的資源。能夠對部署的應用進行擴縮容,進行滾動更新、重啟Pod和部署新應用。本文來講一講Kubernentes DashBoard,當然web 管理界面雖然方便,但是命令行的使用技能任何時候都不能丟。

2 DashBoard部署

2.1 環境准備

    查看kubernentes集群的版本

 

 

     根據自己的機器選擇相應的版本,到官方的github倉庫上面可以看到每個版本都有對應的kubernentes集群對應能適配的版本.因為我的集群是1.18.10版本,所以dashboard選擇2.0.3版。

 

 

 

2.2 部署過程

2.2.1 下載dashboard的yaml文件

[root@master ~]# wget wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml

2.2.2 修改dashboard的yaml文件

修改service部分,默認service是ClusterIP類型,這里改稱NodePort類型,是集群外部能否訪問。

kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30002
selector:
k8s-app: kubernetes-dashboard

應用yaml並查看創建的資源

[root@master ~]# kubectl apply -f recommended.yaml

 

 

此時web界面就可以打開了

 

 

創建登陸用戶

[root@master ~]# vim admin.yaml
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin
namespace: kubernetes-dashboard

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin
namespace: kubernetes-dashboard
[root@master ~]# kubectl apply -f admin.yaml

 

查看登陸token

[root@master ~]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin | awk '{print $1}')|grep '^token'|awk '{print $2}'


此處查看到的token就是web頁面登陸的token。登陸進去以后就可以全局的觀察集群狀態
查看整個集群

 

 

查看node節點

 

 

查看pod資源

 

 

2.3 安裝資源監控Metrics Server

上面的頁面可以看到cpu和內存的使用率都沒有值,是因為沒有安裝metrics server

2.3.1 下載metric server的yaml文件

[root@master ~]# wget wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.1/components.yaml```

 

2.3.2 下載metric server鏡像

因為機器無法訪問google的鏡像倉庫,所以需要從dockerhub第三方倉庫下載
需要到所有的node節點執行

[root@node1 ~]# docker pull phperall/metrics-server:v0.4.1
[root@node1 ~]# docker tag phperall/metrics-server:v0.4.1 k8s.gcr.io/metrics-server/metrics-server:v0.4.1

2.3.3 修改yaml文件

修改metrics api啟動參數,防止證書錯誤
在啟動參數args處增加
- --kubelet-insecure-tls

[root@master ~]# kubectl apply -f components.yaml

可以使用kubectl top查看資源使用

 

 

2.3.4 集群資源狀態

此時再來查看集群,可以看到cpu和內存都有監控值了
查看node節點

 

 

查看pod資源

 

 

2.4 配置登陸config

將上文的token寫入到.kube/config文件中,格式token: $TOKEN
再次登陸web的時候,就不用每次輸入一長串的token了,可以選擇Kubeconfig登陸。采用.kube/config文件,類似ssh的密鑰一樣。

2.5 配置用戶名密碼登陸

有時候使用token登陸,很麻煩,這時我們可以開啟用戶名密碼登陸

2.5.1 開啟kube-apiserver密碼認證

創建用戶名密碼文件

[root@master ~]# echo 'admin,dev,10001,"system:authentication"' > /etc/kubernetes/pki/auth.csv


修改kube-apiserver的yaml文件

[root@master ~]# vim /etc/kubernetes/manifests/kube-apiserver.yaml
啟動參數添加 - --basic-auth-file=/etc/kubernetes/pki/auth.csv

2.5.2 配置用戶權限

上面已經創建了用戶dev,但是該用戶沒有查看集群資源的權限,我們需要給用戶配置權限。
此處我們給用戶配置只有查看namespace的權限

[root@master ~]# vim dev.yaml
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
labels:
kubernetes.io/bootstrapping: rbac-defaults
rbac.authorization.k8s.io/aggregate-to-edit: "true"
name: dev-readonly
rules:
- apiGroups:
- ""
resources:
- namespaces
verbs:
- get
- list
- watch
- apiGroups:
- metrics.k8s.io
resources:
- pods
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dev-readonly
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: dev-readonly
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:authentication

[root@master ~]# kubectl apply -f dev.yaml

 

2.5.3 開啟dashboard密碼認證

修改dashboard密碼文件

[root@master ~]# vim recommended.yaml
啟動參數添加 - --authentication-mode=basic,token
[root@master ~]# kubectl apply -f recommended.yaml

2.5.4 登陸dashboard

此時登陸web節目,可以發現多了一種認證方式。

 

 

2.5.5 注意事項

kubernetes從1.19版本開始已經棄用了basic-auth-file的方式:https://kubernetes.io/docs/setup/release/notes/

 

 

 

至此大功告成

# 參考文檔

https://github.com/kubernetes/dashboard

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM