k8s之web界面(Dashboard)从安装到应用

web界面(Dashboard)

之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的,为了<a href="https://www.fons.com.cn/tag/%e6%8f%90%e4%be%9b" target="_blank">提供更丰富的用户体验,kubernetes还开发了一个基于web的用户界面(Dashboard)。用户可以使用Dashboard部署容器化的应用,还可以监控应用的状态,执行故障排查以及管理kubernetes中各种资源。

在kubernetes Dashboard中可以查看集群中应用的运行状态,也能够创建和修改各种kubernetes资源(比如Deployment,Job,Daemonset等等),用户可以对Deployment实现弹性伸缩,执行滚动升级,重启pod或者使用向导创建新的应用。
可以说,kubernetes Dashboard提供了kubectl的绝大部分功能。

Dashboard 同时展示了kubernetes集群中的资源状态信息和所有报错信息。

k8s之web界面(Dashboard)从安装到应用

官方参考文档:https://kubernetes.io/zh/docs/tasks/access-application-cluster/web-ui-dashboard/
GitHub项目下载地址:https://github.com/kubernetes/dashboard

一,部署Dashboard UI

kubernetes 默认没有部署Dashboard,可通过以下命令下载:

#将yaml文件下载到本地:
[root@master dashboard]#  wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.0/src/deploy/recommended/kubernetes-dashboard.yaml

#修改yaml文件:
k8s之web界面(Dashboard)从安装到应用
由于yaml文件中默认指定下载地址是国外的镜像,由于国内网络环境限制,我们通过阿里云镜像站进行下载。

k8s之web界面(Dashboard)从安装到应用
因为service是ClusterIP类型,为了使外部应用能够方便使用,修改成NodePort类型。

##保存退出后,执行kubectl apply -f 创建dashboard:
k8s之web界面(Dashboard)从安装到应用

##查看pod和service的状态(dashboard会在kube-system 命令空间中创建自己的pod和service):
[root@master dashboard]# kubectl get pod -n kube-system | grep dashboard
kubernetes-dashboard-6cfb7d8f54-rp9nd   1/1     Running   0          2m23s
[root@master dashboard]# kubectl get svc -n kube-system
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP   94d
kubernetes-dashboard   NodePort    10.108.35.182   <none>        443:32134/TCP            3m8s
#此时已经为service分配了32134端口,注意是443端口(https)

二,访问Dashboard UI

通过火狐浏览器访问网址:https://172.16.1.30:32134/ 进入后界面如下:
k8s之web界面(Dashboard)从安装到应用

可以看到Dashboard支持kubeconfig和Token两种认证方式,本文选用Token的方式登录,kubeconfig登陆方式可以参考文档:http://note.youdao.com/noteshare?id=b0523244024d563cdc1bf7c8f7d6083c&sub=A8921821A7BE4CE4BC36B1DC86966460

通过Token的方式登录:

1)创建一个dashboard管理用户:
[root@master dashboard]# kubectl create serviceaccount  dashboard-admin -n kube-system
serviceaccount/dashboard-admin created
2)绑定用户为集群管理用户:
[root@master dashboard]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin  --serviceaccount=kube-system:dashboard-admin
clusterrolebinding.rbac.authorization.k8s.io/dashboard-cluster-admin created
3)获取用户的Token:
[root@master dashboard]# kubectl get secrets -n kube-system  | grep dashboard-admin
dashboard-admin-token-4gdsc                kubernetes.io/service-account-token   3      4m17s
4)查看该token的详细信息:
[root@master dashboard]# kubectl describe secrets -n kube-system dashboard-admin-token-4gdsc

k8s之web界面(Dashboard)从安装到应用

##把获取到的Token复制到登录界面的Token输入框中:
k8s之web界面(Dashboard)从安装到应用

##登陆成功后的web界面如下所示:
k8s之web界面(Dashboard)从安装到应用

三, 使用Dashboard

1,Dashboard界面结构
Dashboard的界面很简洁,分为三个大的区域:
1)顶部操作区:在这里用户可以搜索集群中的资源,创建资源或退出。
k8s之web界面(Dashboard)从安装到应用

2)左边导航菜单: 通过导航菜单可以查看和管理集群中的各种资源,菜单项按照资源的层级分为两类:
Cluster 级别的资源:
k8s之web界面(Dashboard)从安装到应用

NameSpace 级别的资源:
k8s之web界面(Dashboard)从安装到应用
k8s之web界面(Dashboard)从安装到应用
默认显示的是default 的NameSpace,大家可以根据对应的Namespace进行切换。

3)中间主体区: 在导航菜单中点击了某类资源,中间主体区就会显示该资源的所有实例,比如点击service资源
k8s之web界面(Dashboard)从安装到应用

2,典型使用场景
接下来实践几个Dashboard的典型使用场景:
1,部署Deployment:
1)点击顶部操作区的 + CREATE按钮:
k8s之web界面(Dashboard)从安装到应用
k8s之web界面(Dashboard)从安装到应用
用户可以直接输入要部署应用的名字,镜像,副本数等信息;用户也可以YAML配置文件,如果是上传YAML文件,则可以创建任意类型的资源,不仅仅是Deployment。

2,在线对资源进行操作:
对于每种资源,用户都可以点击右边的下拉菜单执行各种操作(删除,查看,编辑等)
k8s之web界面(Dashboard)从安装到应用

##比如点击View/edit YAML 可直接修改资源的配置,保存后立即生效,其效果与kubectl edit一样。
k8s之web界面(Dashboard)从安装到应用

3,查看资源的详细信息
点击某个资源实例的名字,可以查看到详细信息,其效果与kubectl describe一样。
k8s之web界面(Dashboard)从安装到应用
k8s之web界面(Dashboard)从安装到应用
k8s之web界面(Dashboard)从安装到应用
k8s之web界面(Dashboard)从安装到应用

4,查看Pod日志
在Pod或者父资源(DaemonSet,ReplicaSet等)页面中点击上方的“LOGS”按钮,可以查看Pod的日志(查看器可以查看同一个pod的不同容器的日志),其效果与在命令行执行kubectl logs一样。
k8s之web界面(Dashboard)从安装到应用

小结:
以上就是kubernetes Dashboard的安装和使用方法。Dashboard能完成日常管理的大部分工作,可以作为命令行工具kubectl的补充。