第13章 Kubernetes Dashboard

前面章节Kubernetes所有的操作我们都是通过命令行工具kubectl完成的。为了提供更丰富的用户体验,Kubernetes还开发了一个基于Web的Dashboard,用户可以用Kubernetes Dashboard部署容器化的应用、监控应用的状态、执行故障排查任务以及管理Kubernetes的各种资源。

在Kubernetes Dashboard中可以查看集群中应用的运行状态,也能够创建和修改各种Kubernetes资源,比如Deployment、Job、DaemonSet等。用户可以Scale Up/Down Deployment、执行Rolling Update、重启某个Pod或者通过向导部署新的应用。Dashboard能显示集群中各种资源的状态以及日志信息。

可以说,Kubernetes Dashboard提供了kubectl的绝大部分功能,大家可以根据情况进行选择。

13.1 安装

Kubernetes默认没有部署Dashboard,可通过如下命令安装:

kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

Dashboard会在kube-system namespace中创建自己的Deployment和Service,如图13-1所示。

图13-1

因为Service是ClusterIP类型,为了方便使用,我们可通过kubectl --namespace=kube-system edit service kubernetes-dashboard修改成NodePort类型,如图13-2所示。

图13-2

保存修改,此时已经为Service分配了端口31614,如图13-3所示。

图13-3

通过浏览器访问Dashboard https://192.168.56.105:31614/,登录界面如图13-4所示。

图13-4

13.2 配置登录权限

Dashboard支持Kubeconfig和Token两种认证方式,为了简化配置,我们通过配置文件dashboard-admin.yaml为Dashboard默认用户赋予admin权限,如图13-5所示。

图13-5

执行kubectl apply使之生效,如图13-6所示。

图13-6

现在直接单击登录页面中的SKIP就可以进入Dashboard了,如图13-7所示。

图13-7

13.3 Dashboard界面结构

Dashboard的界面很简洁,分为三个大的区域。

(1)顶部操作区,如图13-8所示。在这里用户可以搜索集群中的资源、创建资源或退出。

图13-8

(2)左边导航菜单。通过导航菜单可以查看和管理集群中的各种资源。菜单项按照资源的层级分为以下两类:

图13-9

图13-10

默认显示的是default Namespace,可以进行切换,如图13-11所示。

图13-11

(3)中间主体区。

在导航菜单中单击了某类资源,中间主体区就会显示该资源所有实例,比如单击Pods,如图13-12所示。

图13-12

13.4 典型使用场景

接下来我们介绍几个Dashboard的典型使用场景。

13.4.1 部署Deployment

单击顶部操作区的+CREATE按钮,如图13-13所示。

图13-13

用户可以直接输入要部署应用的名字、镜像、副本数等信息,也可以上传YAML配置文件。如果是上传配置文件,则可以创建任意类型的资源,而不仅仅是Deployment。

13.4.2 在线操作

对于每种资源,都可以单击按钮执行各种操作,如图13-14所示。

图13-14

例如,单击View/edit YAML,可直接修改资源的配置,保存后立即生效,其效果与kubectl edit一样,如图13-15所示。

图13-15

13.4.3 查看资源详细信息

单击某个资源实例的名字,可以查看详细信息,其效果与kubectl describe一样,如图13-16所示。

图13-16

13.4.4 查看Pod日志

在Pod及其父资源(DaemonSet、ReplicaSet等)页面单击 按钮,可以查看Pod的日志,其效果与kubectl logs一样,如图13-17所示。

图13-17

Kubernetes Dashboard界面设计友好,自解释性强,可以看作GUI版的kubectl,更多功能留给大家自己探索。

13.5 小结

本章介绍了Kubernetes Dashboard的安装和使用方法。Dashboard能完成日常管理的大部分工作,可以作为命令行工具kubectl的有益补充。