web界面(Dashboard)
之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的,为了提供更丰富的用户体验,kubernetes还开发了一个基于web的用户界面(Dashboard)。用户可以使用Dashboard部署容器化的应用,还可以监控应用的状态,执行故障排查以及管理kubernetes中各种资源。
在kubernetes Dashboard中可以查看集群中应用的运行状态,也能够创建和修改各种kubernetes资源(比如Deployment,Job,Daemonset等等),用户可以对Deployment实现弹性伸缩,执行滚动升级,重启pod或者使用向导创建新的应用。
可以说,kubernetes Dashboard提供了kubectl的绝大部分功能。
Dashboard 同时展示了kubernetes集群中的资源状态信息和所有报错信息。
官方参考文档: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文件:
由于yaml文件中默认指定下载地址是国外的镜像,由于国内网络环境限制,我们通过阿里云镜像站进行下载。
因为service是ClusterIP类型,为了使外部应用能够方便使用,修改成NodePort类型。
##保存退出后,执行kubectl apply -f 创建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/ 进入后界面如下:
可以看到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
##把获取到的Token复制到登录界面的Token输入框中:
##登陆成功后的web界面如下所示:
三, 使用Dashboard
1,Dashboard界面结构
Dashboard的界面很简洁,分为三个大的区域:
1)顶部操作区:在这里用户可以搜索集群中的资源,创建资源或退出。
2)左边导航菜单: 通过导航菜单可以查看和管理集群中的各种资源,菜单项按照资源的层级分为两类:
Cluster 级别的资源:
NameSpace 级别的资源:
默认显示的是default 的NameSpace,大家可以根据对应的Namespace进行切换。
3)中间主体区: 在导航菜单中点击了某类资源,中间主体区就会显示该资源的所有实例,比如点击service资源
2,典型使用场景
接下来实践几个Dashboard的典型使用场景:
1,部署Deployment:
1)点击顶部操作区的 + CREATE按钮:
用户可以直接输入要部署应用的名字,镜像,副本数等信息;用户也可以YAML配置文件,如果是上传YAML文件,则可以创建任意类型的资源,不仅仅是Deployment。
2,在线对资源进行操作:
对于每种资源,用户都可以点击右边的下拉菜单执行各种操作(删除,查看,编辑等)
##比如点击View/edit YAML 可直接修改资源的配置,保存后立即生效,其效果与kubectl edit一样。
3,查看资源的详细信息
点击某个资源实例的名字,可以查看到详细信息,其效果与kubectl describe一样。
4,查看Pod日志
在Pod或者父资源(DaemonSet,ReplicaSet等)页面中点击上方的“LOGS”按钮,可以查看Pod的日志(查看器可以查看同一个pod的不同容器的日志),其效果与在命令行执行kubectl logs一样。
小结:
以上就是kubernetes Dashboard的安装和使用方法。Dashboard能完成日常管理的大部分工作,可以作为命令行工具kubectl的补充。