k8s搭建WebUI--Dashborad管理界面
k8s的webUI管理界面可以更好更直观更便捷的让我们去管理我们的k8s集群。
我们知道,由于某些原因我们无法直接拉取dashboard的镜像,但是国内有些人已经将镜像下载到dockerhub中可以给我们使用
- 在GitHub官网中获取dashboard的资源清单:https://github.com/kubernetes/dashboard
1 wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
- 使用docker获取dashboard的镜像仓库:
- 修改dashboard的资源清单的镜像仓库路径:
1 vim kubernetes-dashboard.yaml
- 应用此资源清单:
1 kubectl apply -f kubernetes-dashboard.yaml
此时会创建很多资源,其中service是访问时的代理,访问service就可以访问到dashboard的webUI,但是默认生成的service访问类型是ClusterIP,所以集群外部不能访问到。
根据官方文档,目前访问Dashboard有四种方式:NodePort、API Server、kubectl proxy、Ingress
为了方便,我们使用NodePort
- 修改service的访问方式为NodePort:
1 kubectl edit svc kubernetes-dashboard -n kube-system
- 访问
此时就可以用浏览器访问集群中任意一节点的30443端口,注意使用https://方式访问。但是会有警告,点击高级接受风险继续
可以看到有两种登录方式:kubeconfig文件、token令牌。
要想登录,得先有账号
k8s集群中,账号分为两种:UserAccount(现实中的人)、ServiceAccount(集群内的客户端)
由于dashboard在集群中是以Pod方式运行提供的服务,所以要使用ServiceAccount访问,简称sa
然而并不是随随便便找个账号就能登录,我们对账号还要设置访问控制,哪些资源允许什么样的操作。
这就用到我前面写的RBAC(基于角色的访问控制)这里就不再细讲,想要了解点击这里。
- 使用Token登录(相对于以kubeconfig文件登录要简单)
- 首先创建一个sa
1 kubectl create serviceaccount mysa(SA_NAME) -n default(NAMESPACE_NAME)
-
- 创建rolebinding\clusterrolebinding,然后将此sa绑定至集群中存在的或自定义的role或clusterrole,绑定哪个role\clusterrole,sa就会具有此role\clusterrole对应的权限
1 kubectl create clusterrolebinding dashboard-admin(NAME) --clusterrole=admin(CLUSTERROLE_NAME) --serviceaccount=default:mysa(NAMESPACE_NAME:SA_NAME)
-
- 查看sa的secret,里面就有token
-
- 复制token,登录dashboard
- kubeconfig文件方式登录。(设置相对直接token登录复杂些,不过登录所需就是一文件,有这个文件你可以在其他电脑上登录,所以各有有点。)
1 ##将secret中的token使用base64方式进行解码,然后使用变量引用
2 DASH_TOCKEN=$(kubectl get secret mysa-token-wjd28 -o jsonpath={.data.token}|base64 -d)
3
4 ##创建一个集群,将信息输出到/root/dashbord-admin.conf
5 kubectl config set-cluster dashboard-UI --server=192.168.1.100:6443 --kubeconfig=/root/dashbord-admin.conf
6
7 ##创建一个集群用户,并引用sa的token,并输出到/root/dashbord-admin.conf
8 kubectl config set-credentials dashboard-admin --token=$DASH_TOCKEN --kubeconfig=/root/dashbord-admin.conf
9
10 ##创建一个上下文,指定集群名、集群用户名,并输出到/root/dashbord-admin.conf
11 kubectl config set-context dashboard-admin@dashboard-UI --cluster=dashboard-UI --user=dashboard-admin --kubeconfig=/root/dashbord-admin.conf
12
13 ##设置集群中当前使用的用户,并输出到/root/dashbord-admin.conf
14 kubectl config use-context dashboard-admin@dashboard-UI --kubeconfig=/root/dashbord-admin.conf
生成的dashbord-admin.conf即可用于登录dashboard
可以将此文件复制到其他主机,这样其他主机也可以登录
不过,不管是刚用到token登录或kubeconfig文件登录,设置的权限是整个集群中最高的管理员的权限,切记当心泄露
生产环境中,最好将sa绑定到自定义权限的role或者cluster,可以降低role和cluster的权限,来保证集群安全
希望对大家有所帮助,谢谢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构