使用DashBoard管理k8s集群

Posted 小毕超

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用DashBoard管理k8s集群相关的知识,希望对你有一定的参考价值。

一、DashBoard

之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的。其实,为了提供更丰富的用户体验,kubernetes还开发了一个基于web的用户界面(Dashboard)。用户可以使用Dashboard部署容器化的应用,还可以监控应用的状态,执行故障排查以及管理kubernetes中各种资源。

功能特性

  1. 组件支持多类型独立资源
    组件支持报表、统计图、JSP等多种类型资源, 同一面板中组件数据可以来自不同的地方,组件作为资源在平台中存放,可进行增删改查。
  2. 丰富的组件模板
    系统提供了丰富的模板资源供用户选择,并为模板的建立提供了方便的向导操作界面 。
  3. 组件过滤
    组件具有过滤功能,用户可以在组件设计页面配置组件的过滤条件,在前端页面即可进行数据的交互和查询。
  4. 拖拽式设计Dashboard面板
    可自由选取组件拖拽排版、拖拽改变组件显示大小,自由式和分列式的布局使面板设计更为方便和直观。面板也作为资源在平台中存放,可进行增删改查。
  5. 个人Dashboard设计
    个人Dashboard设计可以实现不同用户可以保存自己的DBD首页设置,并且为个人DBD设计提供了方便的向导操作界面。
  6. 多Tab展示Dashboard
    可同时展示多套Dashboard,大大增加了指标信息的显示数量 ,并可设定展示顺序
    基于机构、角色、用户的Dashboard授权功能
    管理看板具有强有力的权限控制功能,可以针对不用的机构用户或角色分配其有权看到的面板,也就是实现让哪些用户查看哪些面板,同时也支持逆向设置方式(选择机构用户或角色,为其设定可看的面板)。

二、部署Dashboard

  1. 下载yaml,并运行Dashboard
# 下载yaml
[root@k8s-master01 ~]# wget  https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml

# 修改kubernetes-dashboard的Service类型
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: 30009  # 新增
  selector:
    k8s-app: kubernetes-dashboard

# 部署
[root@k8s-master01 ~]# kubectl create -f recommended.yaml

# 查看namespace下的kubernetes-dashboard下的资源
[root@k8s-master01 ~]# kubectl get pod,svc -n kubernetes-dashboard
NAME                                            READY   STATUS    RESTARTS   AGE
pod/dashboard-metrics-scraper-c79c65bb7-zwfvw   1/1     Running   0          111s
pod/kubernetes-dashboard-56484d4c5-z95z5        1/1     Running   0          111s

NAME                               TYPE       CLUSTER-IP      EXTERNAL-IP  PORT(S)         AGE
service/dashboard-metrics-scraper  ClusterIP  10.96.89.218    <none>       8000/TCP        111s
service/kubernetes-dashboard       NodePort   10.104.178.171  <none>       443:30009/TCP   111s
  1. 创建访问账户,获取token
# 创建账号
[root@k8s-master01-1 ~]# kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard

# 授权
[root@k8s-master01-1 ~]# kubectl create clusterrolebinding dashboard-admin-rb --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin

# 获取账号token
[root@k8s-master01 ~]#  kubectl get secrets -n kubernetes-dashboard | grep dashboard-admin
dashboard-admin-token-xbqhh        kubernetes.io/service-account-token   3      2m35s

[root@k8s-master01 ~]# kubectl describe secrets dashboard-admin-token-xbqhh -n kubernetes-dashboard
Name:         dashboard-admin-token-xbqhh
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: 95d84d80-be7a-4d10-a2e0-68f90222d039

Type:  kubernetes.io/service-account-token

Data
====
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6ImJrYkF4bW5XcDhWcmNGUGJtek5NODFuSXl1aWptMmU2M3o4LTY5a2FKS2cifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4teGJxaGgiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiOTVkODRkODAtYmU3YS00ZDEwLWEyZTAtNjhmOTAyMjJkMDM5Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVybmV0ZXMtZGFzaGJvYXJkOmRhc2hib2FyZC1hZG1pbiJ9.NAl7e8ZfWWdDoPxkqzJzTB46sK9E8iuJYnUI9vnBaY3Jts7T1g1msjsBnbxzQSYgAG--cV0WYxjndzJY_UWCwaGPrQrt_GunxmOK9AUnzURqm55GR2RXIZtjsWVP2EBatsDgHRmuUbQvTFOvdJB4x3nXcYLN2opAaMqg3rnU2rr-A8zCrIuX_eca12wIp_QiuP3SF-tzpdLpsyRfegTJZl6YnSGyaVkC9id-cxZRb307qdCfXPfCHR_2rt5FVfxARgg_C0e3eFHaaYQO7CitxsnIoIXpOFNAR8aUrmopJyODQIPqBWUehb7FhlU1DCduHnIIXVC_UICZ-MKYewBDLw
ca.crt:     1025 bytes
  1. 通过浏览器访问Dashboard的UI

    在登录页面上输入上面的token


出现下面的页面代表成功

三、使用DashBoard

以Deployment为例演示DashBoard的使用

1. 查看

选择指定的命名空间dev,然后点击Deployments,查看dev空间下的所有deployment

2. 扩缩容

Deployment上点击规模,然后指定目标副本数量,点击确定

3. 编辑

Deployment上点击编辑,然后修改yaml文件,点击确定

4. 查看Pod

点击Pods, 查看pods列表

5. 操作Pod

选中某个Pod,可以对其执行日志(logs)、进入执行(exec)、编辑、删除操作

Dashboard提供了kubectl的绝大部分功能

以上是关于使用DashBoard管理k8s集群的主要内容,如果未能解决你的问题,请参考以下文章

k8s集群中部署和访问Dashboard服务

k8s的dashboard日常操作

k8s安装dashboard

K8S 使用Dashboard部署nginx群集

06—K8S中的Web 界面 (Dashboard)

06—K8S中的Web 界面 (Dashboard)