Kubernetes Dashboard
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
一,简介
Dashboard 是 K8s 官方出的一个管理集群的可视化网页工具。
二,部署
[ldsdsy@ml-redhat ~]$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/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 created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
[ldsdsy@ml-redhat ~]$
三,暴露服务
// 方式一:
[ldsdsy@ml-redhat ~]$ kubectl proxy
Starting to serve on 127.0.0.1:8001
// 这种方式需要在执行这条命令的机器上打开网页,但我的集群都是虚拟机,所以再加后面一步
$ ssh -L8001:localhost:8001 ldsdsy@master_ip
// 把本地主机的 8001 映射到 ldsdsy@ml-redhat 这台 master 节点的 8001
// 方式二:
// 直接把名为 kubernetes-dashboard 的 svc 类型改为 NodePort
[ldsdsy@ml-redhat ~]$ k edit -n kubernetes-dashboard svc kubernetes-dashboard
service/kubernetes-dashboard edited
[ldsdsy@ml-redhat ~]$ k get -n kubernetes-dashboard svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.111.78.87 <none> 8000/TCP 3m10s
kubernetes-dashboard NodePort 10.109.113.255 <none> 443:31018/TCP 3m10s
[ldsdsy@ml-redhat ~]$
四,访问登录页面
// 方式一:
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
// 方式二:
https://nodeIP:31018/
// 如图所示需要 token
https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md
如文档所示,在集群里创建 Service Account 和 ClusterRoleBinding 保存为 dashboard-adminuser.yaml
$ kubectl apply -f dashboard-adminuser.yaml
$ kubectl -n kubernetes-dashboard create token admin-user
// 获取到 token 输入到网页点击登录
五,Dashboard 页面
六,使用
界面很简洁,上侧是 ns 选择区和一个搜索框,左侧以列表形式展示的各种集群资源,结合 ns 一起过滤显示资源。以 Pod 为例,除了基本的信息显示外,还可在页面对它进行查看日志,进入容器,编辑,删除这四种操作。同时在右上方有一个 + 图标,点击 + 可在页面直接创建资源,当前 v2.7.0 的版本有三种创建方式:直接编辑 yaml/json 文本,从本地选取 yaml/josn 文件,设定部分关键信息来创建。简单说 Dashboard 的功能就是对集群资源进行增删改查,部署简单,适合一些基础的使用需求。
七,追加
后续又使用了一下人气比较高的 Lens,确实比起 DashBoard 它更好:
1,更清爽的安装方式 —— 是一个独立的软件,不需要安装在集群里,适配多平台;
2,更多的功能 —— 集群添加简单,多集群管理;
3,更好的监控 —— 一键部署 prometheus,监控信息更多更全;
……
以上几点都只是我简单使用所感知到的一些不同,简单说,Lens 比 Dashboard 更全面,用起来更顺手一些,对于个人使用来说免费版的已经足够用。但 Lens 95% 的代码都是 TypeScript 写的,而且很独立于 K8s,所以还是想先研究研究 Dashboard 的源码(听说 Dashboard 的中国区后继无人🥲)。