kubernetes入門到實戰(四)dashboard圖形界面讓k8s更簡單

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: 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獲取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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章