k8s搭建WebUI--Dashborad管理界面

k8s的webUI管理界面能夠更好更直觀更便捷的讓咱們去管理咱們的k8s集羣。html

咱們知道,因爲某些緣由咱們沒法直接拉取dashboard的鏡像,可是國內有些人已經將鏡像下載到dockerhub中能夠給咱們使用git

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,因此集羣外部不能訪問到。github

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

  爲了方便,咱們使用NodePortdocker

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

  • 訪問

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

能夠看到有兩種登陸方式:kubeconfig文件、token令牌。vim

要想登陸,得先有帳號瀏覽器

k8s集羣中,帳號分爲兩種:UserAccount(現實中的人)、ServiceAccount(集羣內的客戶端)安全

因爲dashboard在集羣中是以Pod方式運行提供的服務,因此要使用ServiceAccount訪問,簡稱saapp

然而並非隨隨便便找個帳號就能登陸,咱們對帳號還要設置訪問控制,哪些資源容許什麼樣的操做。

這就用到我前面寫的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的權限,來保證集羣安全

但願對你們有所幫助,謝謝

相關文章
相關標籤/搜索