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


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資源定義

<code>[root@node-1 ~]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yamlnamespace/kubernetes-dashboard createdserviceaccount/kubernetes-dashboard createdservice/kubernetes-dashboard createdsecret/kubernetes-dashboard-certs createdsecret/kubernetes-dashboard-csrf createdsecret/kubernetes-dashboard-key-holder createdconfigmap/kubernetes-dashboard-settings createdrole.rbac.authorization.k8s.io/kubernetes-dashboard createdclusterrole.rbac.authorization.k8s.io/kubernetes-dashboard configuredrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard createdclusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard unchangeddeployment.apps/kubernetes-dashboard createdservice/dashboard-metrics-scraper createddeployment.apps/dashboard-metrics-scraper created/<code>

安裝文件中定義了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使k8s普及大眾

kubernetes-dashboard安裝校驗

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

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

修改kubernetes-dashboard service類型

4、此時通過https協議訪問30433端口即可打開dashboard的控制檯,為了保護數據安全性,集群默認開啟了RBAC認證授權,需要授予權限的用戶才可以訪問到kubernetes集群,因此需要授權用戶訪問集群,集群中已定有了cluster-admin的角色和相關的Role,ClusterRole和ClusterRoleBinding角色,定義ServiceAccount將其關聯即可,如下:

<code>[root@node-1 ~]# cat dashboard-rbac.yaml ---apiVersion: v1kind: ServiceAccountmetadata:  name: happylau   namespace: kubernetes-dashboard---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:  name: happylauroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: cluster-adminsubjects:- kind: ServiceAccount  name: happylau   namespace: kubernetes-dashboard/<code>

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

<code>[root@node-1 ~]# kubectl apply -f dashboard-rbac.yaml serviceaccount/happylau createdclusterrolebinding.rbac.authorization.k8s.io/happylau created[root@node-1 ~]# kubectl get serviceaccounts -n kubernetes-dashboard NAME                   SECRETS   AGEdefault                1         114mhappylau               1         8skubernetes-dashboard   1         114m/<code>

6、此時通過kubernetes-dashboard-csrf服務會自動創建一個和用戶名關聯的Secrets,通過token字段來登陸,token通過base64加密,解密後即可登錄,如下演示登錄的過程

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

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和ingressConfigMap and Storage,包含ConfigMap,Secrets和PVCCostom Resource Definition,自定義資源定義
  • kubernetes資源監控,調用metric-server監控系統,實現Cluster集群,Workloads應用負載,存儲等資源的監控
  • 管理資源對象,包含創建,編輯yaml,刪除負載等,主要是以Deployments等應用為主的管理

1、查看集群整體概覽資源,可以看到整體集群,應用負載,Pod資源的資源使用情況

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

資源概覽

2、Cluster集群資源管理,包含還有Nodes,Namespace,StorageClass等,提供在線編輯yaml方式

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

集群資源

3、查看應用工作負載Workloads,包含各種不同的工作負載如Deployments,StatefulSets,Jobs等

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

工作負載

4、部署Deployments工作負載,支持從YAML文件輸入,YAML文件加載和圖形界面部署應用

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

部署工作負載

5、工作負載管理,擴展工作負載副本數目,滾動更新等

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

擴展副本+滾動更新

6、遠程登錄容器和查看容器日誌

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

登錄容器和查看日誌

寫在最後

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/


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


分享到:


相關文章: