一 Kubernetes dashboard簡介
1.1 Web UI簡介
dashboard是基於Web的Kubernetes用戶界面。可使用dashboard將容器化應用程序部署到Kubernetes集羣,對容器化應用程序進行故障排除,以及管理集羣資源。可使用dashboard來概述羣集上運行的應用程序,以及建立或修改單個Kubernetes資源(例如部署、任務、守護進程等)。可使用部署嚮導擴展部署,啓動滾動更新,從新啓動Pod或部署新應用程序。
dashboard還提供有關羣集中Kubernetes資源狀態以及可能發生的任何錯誤的信息。
二 dashboard部署
2.1 下載yaml
1 [root@master ~]# mkdir dashboard #建議將yaml存儲到本地 2 [root@master ~]# cd dashboard/ 3 [root@master dashboard]# wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
2.2 修改成國內源
1 [root@master ~]# cd dashboard/ 2 [root@master dashboard]# vi kubernetes-dashboard.yaml 3 …… 4 image: mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 5 ……
提示:將yaml文件中的image字段修改成mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1。
2.3 安裝
1 [root@master dashboard]# kubectl apply -f kubernetes-dashboard.yaml 2 [root@master ~]# kubectl get pod --all-namespaces -o wide| grep kubernetes-dashboard #確認驗證 3 kube-system kubernetes-dashboard-68ddcc97fc-c5thv 0/1 Running 0 30s <none> node2 <none> <none>
三 dashboard訪問方式
3.1 訪問方式概述
安裝dashboard後,須要爲用戶配置對羣集資源的訪問控制。從版本1.7開始,dashboard再也不具備默認授予的徹底管理員權限。默認全部權限都被撤銷,而且只授予了使Dashboard工做所需的最小權限。
提示:本說明僅針對使用Dashboard 1.7及更高版本的用戶。若是確信dashboard須要授予管理員權限,可參考:《附006.Kubernetes身份認證》
一般,其餘應用程序不該直接訪問dashboard。
dashboard有如下三種訪問方式:
kubectl proxy:只能在localhost上訪問。訪問地址:http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
NodePort:編輯 kubernetes-dashboard.yaml文件中,將 type: ClusterIP 改成 type: NodePort,確認dashboard運行在哪一個節點後。訪問地址:https://<node-ip>:<nodePort>
apiserver:須要在瀏覽器中安裝用戶證書。訪問地址: https://<master-ip>:<apiserver-port>/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
提示:kubectl proxy方式不推薦,建議使用有效證書來創建安全的HTTPS鏈接。
3.2 kubectl proxy
1 [root@master ~]# kubectl proxy 2 [root@master ~]# curl http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ #訪問
提示:建議經過後端形式,而且容許全部主機訪問的方式:
1 [root@master ~]# nohup kubectl proxy --address='0.0.0.0' --accept-hosts='^*$' &
3.3 NodePort
NodePort訪問儀表板的方式僅建議用於單節點設置中的Kubernetes環境。
1 [root@master ~]# kubectl -n kube-system edit service kubernetes-dashboard 2 …… 3 type: NodePort 4 …… 5 #將type: ClusterIP 修改成 type: NodePort。
提示:以上操做也可經過如下命令一步完成:
1 [root@master ~]# kubectl get pods --namespace=kube-system | grep dashboard 2 kubernetes-dashboard-68ddcc97fc-c5thv 1/1 Running 0 3h14m 3 [root@master ~]# kubectl describe pod kubernetes-dashboard-68ddcc97fc-c5thv --namespace=kube-system | grep Node 4 Node: node2/172.24.8.73
測試訪問:
瀏覽器訪問:http://172.24.8.73:30343/
提示:若部署的Kubernetes集羣爲多節點集羣,須要經過以上方式查找dashboard所在的node節點,若爲單節點集羣,則直接訪問http://<master>:<port>便可。
3.4 apiserver
若Kubernetes API服務器公開並可從外部訪問,可瀏覽器直接訪問:https://172.24.8.71:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
注意:apiserver默認狀況下使用system:anonymous用戶進行訪問,所以沒有權限打開相應資源。只有在選擇在瀏覽器中安裝用戶證書時,才能使用這種訪問儀表板的方式。
NodePort和apiserver都須要配置相應的認證纔可訪問,肯定某種方式方式後須要配置認證類型。
3.5 Ingress
dashboard也可使用ingress進行資源公開。
可參考:https://kubernetes.io/docs/concepts/services-networking/ingress/
四 dashboard驗證方式
瀏覽器訪問的時候須要加載相應證書,部署完成後默認已經建立相應證書,可參考附01進行導出。因爲Kubernetes默認證書可能過時致使沒法訪問dashboard,本實驗在已成功部署Kubernetes後手動從新建立證書。
4.1 建立證書
1 [root@master ~]# mkdir /etc/kubernetes/dash_pki 2 [root@master ~]# cd /etc/kubernetes/dash_pki/ 3 [root@master dash_pki]# openssl genrsa -out ca.key 2048 #生成一個 2048 bit 的 ca.key 4 [root@master dash_pki]# openssl req -x509 -new -nodes -key ca.key -subj "/CN=172.24.8.71" -days 10000 -out ca.crt #根據 ca.key 生成一個 ca.crt(使用 -days 設置證書的有效時間) 5 [root@master dash_pki]# openssl genrsa -out server.key 2048 #生成一個 2048 bit 的 server.key 6 [root@master dash_pki]# openssl req -new -key server.key -subj "/CN=172.24.8.71" -out server.csr #根據 server.key 生成一個 server.csr 7 [root@master dash_pki]# openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 #根據 ca.key、ca.crt 和 server.csr 生成 server.crt 8 subject=/CN=172.24.8.71 9 Getting CA Private Key 10 [root@master dash_pki]# openssl x509 -noout -text -in ./server.crt #查看證書
4.2 修改默認證書配置
1 [root@master ~]# cd dashboard/ 2 [root@master dashboard]# kubectl delete -f kubernetes-dashboard.yaml #刪除使用默認證書所建立的dashboard 3 [root@master dashboard]# ll /etc/kubernetes/dash_pki/ 4 [root@master dashboard]# kubectl create secret generic kubernetes-dashboard-certs --from-file="/etc/kubernetes/dash_pki/server.crt,/etc/kubernetes/dash_pki/server.key" -n kube-system #掛載新證書到dashboard 5 [root@master dashboard]# kubectl get secret kubernetes-dashboard-certs -n kube-system -o yaml #查看新證書
4.3 從新部署dashboard
1 [root@master dashboard]# kubectl apply -f kubernetes-dashboard.yaml 2 [root@master dashboard]# kubectl get pods --namespace=kube-system | grep dashboard #確認驗證
4.4 導入證書
將server.crt導入IE瀏覽器,導入操做略。
4.5 訪問測試
本試驗基於apiserver訪問方式+Kubeconfig身份驗證進行登陸。
經過apiserver形式訪問:https://172.24.8.71:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
提示:dashboard登陸整個流程可參考:https://www.cnadn.net/post/2613.htm
提示:apiserver方式見3.4,Kubeconfig驗證方式見《附006.Kubernetes身份認證》中的3.5。
附001:導出當前Kubernetes證書html
[root@master ~]# grep 'client-certificate-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt
[root@master ~]# grep 'client-key-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key
[root@master ~]# openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out k8s.crt -name "kubernetes-client"
Enter Export Password:[x120952576]
Verifying - Enter Export Password:[x120952576]
使用相應的密碼,將k8s.crt導入IE瀏覽器,導入操做略。
個人博客即將同步至騰訊雲+社區,邀請你們一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=20stclch1nfo4
原文出處:https://www.cnblogs.com/itzgr/p/11082342.htmlnode