1. kubernetes-dashboard簡介
kubernetes中管理集羣中資源的方式通常有四種:命令行、YAML、API和圖形界面,四種不同的方式適用於不同的人羣和場景,對比如下:
- 命令行kubectl,kubectl提供了命令行管理kubernetes資源
- 優點:使用方便、便捷、快速管理集羣資源
- 缺點:功能相對有限,部分操作無法支持,有一定的門檻
- YAML資源定義,kubernetes中最終轉換形式,推薦使用方式
- 優點:功能齊備,能夠定義kubernetes的所有對象和資源
- 缺點:門檻較高,需要具備專業技術能力,使用排障難度大
- API管理接入,提供各種編程語言SDK接口,方便各種編程語言應用程序接入
- 優點:適配各種編程語言,如Java,Go,Python,C等,方便開發kubernetes
- 缺點:門檻較高,適用於開發人員
- 圖形kubernetes-dashboard,提供圖形化管理界面,能夠利用metric-server實現node和pod的監控
- 優點:使用簡單,便捷,適合大衆。
- 缺點:功能相對簡單,功能原生,適用於demo
2. kubernetes-dashboard安裝
社區提供了kubernetes-dashbaord的YAML資源定義文件,直接下載YAML文件安裝即可實現dashboard的安裝接入,需要準備條件如下:
- 已安裝好的kubernetes集羣,本文環境爲1.15.3
- metric-server監控,node監控和pod監控視圖需依賴於監控系統
- RBAC認證授權,設置好賬戶並授予訪問權限
1、下載kubernetes-dashboard安裝文件並應用YAML資源定義
[root@node-1 ~]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard configured
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
安裝文件中定義了dashboard相關的資源,可以查閱YAML文件,資源包含有:
- kubernetes-dashboard命名空間
- ServiceAccount訪問用戶
- Service服務訪問應用,默認爲ClusterIP
- Secrets,存放有kubernetes-dashboard-certs,kubernetes-dashboard-csrf,kubernetes-dashboard-key-holder證書
- ConfigMap配置文件
- RBAC認證授權,包含有Role,ClusterRole,RoleBinding,ClusterRoleBinding
- Deployments應用,kubernetes-dashboard核心鏡像,還有一個和監控集成的dashboard-metrics-scraper
2、校驗資源的安裝情況,kubernetes-dashbaord的資源都安裝在kubernetes-dashboard命名空間下,包含有Deployments,Services,Secrets,ConfigMap等
3、kubernetes-dashbaord安裝完畢後,kubernetes-dashboard默認service的類型爲ClusterIP,爲了從外部訪問控制面板,開放爲NodePort類型
4、此時通過https協議訪問30433端口即可打開dashboard的控制檯,爲了保護數據安全性,集羣默認開啓了RBAC認證授權,需要授予權限的用戶纔可以訪問到kubernetes集羣,因此需要授權用戶訪問集羣,集羣中已定有了cluster-admin的角色和相關的Role,ClusterRole和ClusterRoleBinding角色,定義ServiceAccount將其關聯即可,如下:
[root@node-1 ~]# cat dashboard-rbac.yaml
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: happycloudlab
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: happycloudlab
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: happylau
namespace: kubernetes-dashboard
5、應用RBAC規則,創建一個happycloudlab的用戶,並和cluster-admin的角色關聯
[root@node-1 ~]# kubectl apply -f dashboard-rbac.yaml
serviceaccount/happycloudlab created
clusterrolebinding.rbac.authorization.k8s.io/happylau created
[root@node-1 ~]# kubectl get serviceaccounts -n kubernetes-dashboard
NAME SECRETS AGE
default 1 114m
happylau 1 8s
kubernetes-dashboard 1 114m
6、此時通過kubernetes-dashboard-csrf服務會自動創建一個和用戶名關聯的Secrets,通過token字段來登陸,token通過base64加密,解密後即可登錄,如下演示登錄的過程
自此,kubernetes-dashboard安裝完畢,通過RBAC認證授權特定用戶訪問集羣權限,接下來一起探索dashboard帶來的魔力吧。
3. 探索kubernetes-dashboard
kubernetes-dashboard圖形工具能提供以下功能:
- 查看kubernetes中的資源對象,包含kubernetes中各種資源
- Cluster 集羣級別的資源,如命名空間,節點,PV,StorageClass,ClusterRole等
- Workloads,不同類型的工作負載,包含Deployments,StatefulSets,DaemonSets,Jobs等
- Discovery and LoadBalancing,服務發現和負載均衡,包含service和ingress
- ConfigMap and Storage,包含ConfigMap,Secrets和PVC
- Costom Resource Definition,自定義資源定義
- kubernetes資源監控,調用metric-server監控系統,實現Cluster集羣,Workloads應用負載,存儲等資源的監控
- 管理資源對象,包含創建,編輯yaml,刪除負載等,主要是以Deployments等應用爲主的管理
1、查看集羣整體概覽資源,可以看到整體集羣,應用負載,Pod資源的資源使用情況
2、Cluster集羣資源管理,包含還有Nodes,Namespace,StorageClass等,提供在線編輯yaml方式
3、查看應用工作負載Workloads,包含各種不同的工作負載如Deployments,StatefulSets,Jobs等
4、部署Deployments工作負載,支持從YAML文件輸入,YAML文件加載和圖形界面部署應用
5、工作負載管理,擴展工作負載副本數目,滾動更新等
6、遠程登錄容器和查看容器日誌
寫在最後
kubernetes-dashboard提供了原生的k8s管理工具,提供一個便捷的可視化界面,方便使用控制檯管理k8s資源,dashboard提供的功能相對原生,企業可以根據公司的需求通過api進行二次開發,以滿足需求。對於k8s管理員而言,一般以使用命令行或yaml文件爲主。
參考文獻
dashboard安裝手冊:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
RBAC認證授權:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/