1. Dashboard概述
Dashboard是基於Web的Kubernetes用戶界面,我們可以通過Dashboard直接管理集群資源,運行、創建或修改集群中的資源,監控容器中的資源狀態和發生的錯誤信息。還可以使用部署向導來擴展部署,啟動滾動更新,重新啟動Pod或部署新應用程序。
2. 安裝Dashboard
安裝docker鏡像
不能FQ的話,需要先下載鏡像,然后再調用kubectl安裝,安裝時注意鏡像的版本必須和yaml的一致
docker pull registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0 docker tag registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0 docker image rm registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0
PS:如果直接安裝不了,可以使用下面命令進行查找,然后再替換源進行安裝
docker search kubernetes-dashboard-amd64
如果可以FQ,則直接執行下面代碼安裝
下載recommended.yaml文件(這種方式下載不了的話,可以直接將url復制到瀏覽器打開,然后將內容保存到recommended.yaml中,再上傳到服務器上)
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
修改recommended.yaml配置
vi recommended.yaml
找到第一個kind: Service,內容如下:
kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: ports: - port: 443 targetPort: 8443 selector: k8s-app: kubernetes-dashboard
將內容修改為:
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: 30001 selector: k8s-app: kubernetes-dashboard
安裝插件
kubectl create -f recommended.yaml
檢查安裝(插件加載與初始化需要等待一段時間,提交命令后需要等待一段時間,dashboard的狀態才會變為Running)
kubectl get pods -n kubernetes-dashboard
dashboard狀態
NAME READY STATUS RESTARTS AGE dashboard-metrics-scraper-76585494d8-xnpq5 1/1 Running 0 25m kubernetes-dashboard-5996555fd8-ndsth 1/1 Running 0 25m
輸入命令
kubectl get service -n kubernetes-dashboard
查看服務暴露的端口
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dashboard-metrics-scraper ClusterIP 10.96.238.121 <none> 8000/TCP 27m kubernetes-dashboard NodePort 10.96.198.238 <none> 443:30001/TCP 27m
kubernetes-dashboard服務所暴露的30001端口就是我們可以直接訪問的地址了,即我們可以直接用http://服務器ip:30001 訪問Dashboard了
注意
如果安裝后,dashboard狀態直接爆錯,沒有處於Running狀態,可以執行下面命令刪除插件與鏡像,使用docker pull安裝鏡像的可以更換其他版本鏡像與yaml進行安裝
# 刪除dashboard插件,recommended.yaml為安裝時的名稱,執行刪除后,docker里對應的鏡像沒不會同步刪除 kubectl delete -f recommended.yaml # 如果將要安裝的鏡像版本同已安裝的不一致,需要將鏡像刪除干凈后,再重新安裝 # 查看當前服務器的docker鏡像,獲取IMAGE ID,需要每一台都執行刪除 docker images # REPOSITORY TAG IMAGE ID CREATED SIZE # kubernetesui/dashboard v2.0.0-beta8 eb51a3597525 2 weeks ago # 執行刪除命令,刪除指定IMAGE ID的鏡像 docker rmi eb51a3597525 # 如果該鏡像ID綁定了多個容器,則需要用下面命令刪除 docker rmi kubernetesui/dashboard:v2.0.0-beta8
3. 檢查安裝
啟動Web訪問,accept-hosts需要綁定當前服務器ip,即綁定接收請求的地址(可以使用正則表達式),不綁定訪問可能會被拒絕,直接返回“Forbidden”
nohup kubectl proxy --address='0.0.0.0' --port=8001 --accept-hosts='.*'
直接用curl在服務器測試訪問
curl http://localhost:8001/api/
如果能返回下面json串,就表示Dashboard已安裝成功
{ "kind": "APIVersions", "versions": [ "v1" ], "serverAddressByClientCIDRs": [ { "clientCIDR": "0.0.0.0/0", "serverAddress": "192.168.10.161:6443" } ] }
打開瀏覽器,進入Dashboard web管理平台 http://192.168.10.161:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login
或者是下面地址
創建dashboard web訪問管理員賬號
# 創建賬號 kubectl create serviceaccount admin-user -n kube-system # 綁定管理員權限 kubectl create clusterrolebinding admin-user --clusterrole=cluster-admin --serviceaccount=kube-system # 查看賬號名稱 kubectl get secret -n kube-system | grep admin-user # NAME TYPE DATA AGE # admin-user-token-fdvh6 kubernetes.io/service-account-token 3 69s # 查看賬號Token kubectl describe secret admin-user-token-fdvh6 -n kube-system |grep '^token'|awk '{print $2}'
Token值
eyJhbGciOiJSUzI1NiIsImtpZCI6IkxkZ2RrdW1qT2VRYWJUV2RYY3JicENxY0pIUDN2OXZLREJ1N1BweE9od2sifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi1zcms5dCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6Ijc3MWFkZGNjLTRjNzAtNGM1OC1hMTA1LWIwNDZkZWYzZWE4OCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphZG1pbiJ9.P8gptD6tc_HhanEhV8G-wlObi_yqNsIoj5Zdvev_qABv2HpOyWDhc3CiuDtP3RzdJ7UU0OjcBsRKQViQPW-r9NgTA5-DjrBSIKqWRDMV63HwKPOaYF1_LmGHMQYKy0OdugYZumjDo5whJFn-0XVTXKrea3QqFAL7_MVMoUbiDTZ1vQgL-AQziwk5WrCOhrXjSzcoRge3W5Fs-6z7-8ZHege3aTpKY2TxtWdu0bvqVnnb6Yd0VqAeQDaMy12D5n80BJno3l2WoWeEk-KSBTXSA_7Z2wwTcrDWL4E38sItRIkRRLDGtpP7AIZtQTWohzigeKVkMHO7iaQ6e3dmRkLLlg
在瀏覽器登錄窗口選擇Token登錄,輸入上面Token點擊登錄,進入管理界面
如果點擊登錄無響應或出錯,可以按下面方法查看日志,檢查錯誤信息
kubectl get pods --namespace=kube-system | grep dashboard
屏幕上會顯示當前dashboard運行的服務,看看服務運行狀態是否正常
kubernetes-dashboard-74c96fd8ff-pdft8 1/1 Running 0 3h3m
查看指定節點的詳細消息,看看是否有錯誤事件記錄
kubectl describe pod kubernetes-dashboard-74c96fd8ff-pdft8 -n kube-system
輸入命令,實時查看服務日志信息,分析日志錯誤信息
kubectl logs -f kubernetes-dashboard-74c96fd8ff-pdft8 -n kube-system
4. 安裝Heapster
默認安裝的dashboard無法展示集群的度量指標信息,此時就需要安裝heapster插件
Heapster 插件使用包含三部分內容:
Heapster:顯示各 Nodes、Pods 的 CPU、內存、負載等利用率曲線圖。
InfluxDB:存儲 Pod 信息相關的數據庫, Heapster 獲取數據之后, 可以指定存儲在 InfluxDB。
Grafana:這個主要是用於顯示 InfluxDB 里面的數據情況, 可以讓我們很直觀看到數據變化。
安裝InfluxDB
下載安裝包
wget https://repos.influxdata.com/rhel/6Server/x86_64/stable/influxdb-1.7.9.x86_64.rpm
安裝rmp
rpm -ivh influxdb-1.7.9.x86_64.rpm
啟動Influxdb服務
systemctl start influxdb
systemctl enable influxdb
5. 常用命令
刪除指定賬號
kubectl delete serviceaccount -n kube-system admin
刪除指定角色
kubectl delete clusterrole -n kube-system admin