kubernetes系列教程(二十一)dashboard使k8s普及大眾

寫在前面

前面的kubernets系列文章介紹了通過命令行和yaml文件的方式對kubernetes中資源的管理,命令行和yaml文件方式管理對於管理員來說無疑是利器,而對於普通大眾來說,圖形管理介面需求則為更迫切的方式,本章介紹kubernetes社區提供的一個圖形介面管理工具:kubernetes-dashboard,通過一個WebUI管理kubernetes的資源。

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等

kubernetes-dashboard安裝校驗

3、kubernetes-dashbaord安裝完畢後,kubernetes-dashboard默認service的類型為ClusterIP,為了從外部訪問控制面板,開放為NodePort類型

修改kubernetes-dashboard service類型

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: happylau    namespace: kubernetes-dashboard  ---  apiVersion: rbac.authorization.k8s.io/v1  kind: ClusterRoleBinding  metadata:    name: happylau  roleRef:    apiGroup: rbac.authorization.k8s.io    kind: ClusterRole    name: cluster-admin  subjects:  - kind: ServiceAccount    name: happylau    namespace: kubernetes-dashboard

5、應用RBAC規則,創建一個happylau的用戶,並和cluster-admin的角色關聯

[root@node-1 ~]# kubectl apply -f dashboard-rbac.yaml  serviceaccount/happylau 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獲取token登錄

自此,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/


當你的才華撐不起你的野心時,你就應該靜下心來學習

返回kubernetes系列教程目錄

如果覺得文章對您有幫助,請訂閱專欄,分享給有需要的朋友吧?

關於作者 劉海平(HappyLau )雲計算高級顧問 目前在騰訊雲從事公有雲相關工作,曾就職於酷狗,EasyStack,擁有多年公有雲+私有雲計算架構設計,運維,交付相關經驗,參與了酷狗,南方電網,國泰君安等大型私有雲平台建設,精通Linux,Kubernetes,OpenStack,Ceph等開源技術,在雲計算領域具有豐富實戰經驗,擁有紅帽RHCA/RHCE和OpenStack/Linux授課經驗