k8s搭建WebUI--Dashborad管理界面


k8s的webUI管理界面可以更好更直觀更便捷的讓我們去管理我們的k8s集群。

我們知道,由於某些原因我們無法直接拉取dashboard的鏡像,但是國內有些人已經將鏡像下載到dockerhub中可以給我們使用

1 wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
  • 使用docker獲取dashboard的鏡像倉庫:

 

  • 修改dashboard的資源清單的鏡像倉庫路徑:
1 vim kubernetes-dashboard.yaml

  • 應用此資源清單:
1 kubectl apply -f kubernetes-dashboard.yaml

   此時會創建很多資源,其中service是訪問時的代理,訪問service就可以訪問到dashboard的webUI,但是默認生成的service訪問類型是ClusterIP,所以集群外部不能訪問到。

        根據官方文檔,目前訪問Dashboard有四種方式:NodePort、API Server、kubectl proxy、Ingress

  為了方便,我們使用NodePort

  • 修改service的訪問方式為NodePort:
1 kubectl edit svc kubernetes-dashboard -n kube-system

  • 訪問

  此時就可以用瀏覽器訪問集群中任意一節點的30443端口,注意使用https://方式訪問。但是會有警告,點擊高級接受風險繼續

可以看到有兩種登錄方式:kubeconfig文件、token令牌。

要想登錄,得先有賬號

k8s集群中,賬號分為兩種:UserAccount(現實中的人)、ServiceAccount(集群內的客戶端)

由於dashboard在集群中是以Pod方式運行提供的服務,所以要使用ServiceAccount訪問,簡稱sa

然而並不是隨隨便便找個賬號就能登錄,我們對賬號還要設置訪問控制,哪些資源允許什么樣的操作。

這就用到我前面寫的RBAC(基於角色的訪問控制)這里就不再細講,想要了解點擊這里

  • 使用Token登錄(相對於以kubeconfig文件登錄要簡單)
    • 首先創建一個sa
1 kubectl create serviceaccount mysa(SA_NAME) -n default(NAMESPACE_NAME) 
    • 創建rolebinding\clusterrolebinding,然后將此sa綁定至集群中存在的或自定義的role或clusterrole,綁定哪個role\clusterrole,sa就會具有此role\clusterrole對應的權限
1 kubectl create clusterrolebinding dashboard-admin(NAME) --clusterrole=admin(CLUSTERROLE_NAME) --serviceaccount=default:mysa(NAMESPACE_NAME:SA_NAME)
    • 查看sa的secret,里面就有token

    • 復制token,登錄dashboard

  

  • kubeconfig文件方式登錄。(設置相對直接token登錄復雜些,不過登錄所需就是一文件,有這個文件你可以在其他電腦上登錄,所以各有有點。
 1 ##將secret中的token使用base64方式進行解碼,然后使用變量引用  2 DASH_TOCKEN=$(kubectl get secret mysa-token-wjd28 -o jsonpath={.data.token}|base64 -d)  3  4 ##創建一個集群,將信息輸出到/root/dashbord-admin.conf  5 kubectl config set-cluster dashboard-UI --server=192.168.1.100:6443 --kubeconfig=/root/dashbord-admin.conf  6  7 ##創建一個集群用戶,並引用sa的token,並輸出到/root/dashbord-admin.conf  8 kubectl config set-credentials dashboard-admin --token=$DASH_TOCKEN --kubeconfig=/root/dashbord-admin.conf  9 10 ##創建一個上下文,指定集群名、集群用戶名,並輸出到/root/dashbord-admin.conf 11 kubectl config set-context dashboard-admin@dashboard-UI --cluster=dashboard-UI --user=dashboard-admin --kubeconfig=/root/dashbord-admin.conf 12 13 ##設置集群中當前使用的用戶,並輸出到/root/dashbord-admin.conf 14 kubectl config use-context dashboard-admin@dashboard-UI --kubeconfig=/root/dashbord-admin.conf

生成的dashbord-admin.conf即可用於登錄dashboard

可以將此文件復制到其他主機,這樣其他主機也可以登錄

不過,不管是剛用到token登錄或kubeconfig文件登錄,設置的權限是整個集群中最高的管理員的權限,切記當心泄露

生產環境中,最好將sa綁定到自定義權限的role或者cluster,可以降低role和cluster的權限,來保證集群安全

希望對大家有所幫助,謝謝


免責聲明!

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



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