Kubernetes 的 Web UI 仪表板部署以及使用

前言

Kubernetes 仪表盘为集群提供了基于网页的用户界面。人们可以使用该仪表盘在集群上部署应用程序,也可以对集群中已有的应用程序进行故障排查。此外,该仪表盘还能让人深入了解集群中的资源情况。它由 Kubernetes 官方提供,人们能够通过它创建、修改、更新以及删除 Kubernetes 对象。

在本文中,我们将安装 Kubernetes 官方提供的仪表盘,并设置一个服务账号来访问它。在继续阅读本文前,假定你已经熟悉 Kubernetes 并且拥有一个 Kubernetes 集群。

接下来,我将一步一步教大家如何进行安装和部署!!

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。
  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。
  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。
  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。
  • 到此为止,我们的云服务器就远程连接上了。

开始部署

部署 Kubernetes 仪表盘

要部署 Kubernetes 仪表盘,我们可以从 Github 下载其对象文件。使用以下命令下载对象文件,该文件包含了命名空间(Namespace)、服务账号(ServiceAccount)、服务(Service)、密钥(Secret)、配置映射(ConfigMap)、角色(Role)、集群角色(ClusterRole)、角色绑定(RoleBinding)、集群角色绑定(ClusterRoleBinding)、部署(Deployment)以及服务等的定义。

重命名文件,并将服务类型更改为 NodePort,可参考以下截图。

bash 复制代码
vim kubernetes-dashboard-deployment.yml

内容:

yaml 复制代码
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
  - port: 443
    targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort

将服务类型更改为 NodePort 后,就可以创建负责部署 Kubernetes 仪表盘的所有对象了。

bash 复制代码
kubectl apply -f kubernetes-dashboard-deployment.yml

检查通过上述命令创建的部署(Deployment)、Pod 和服务(Service)情况。上述命令还会创建命名空间、服务账号、服务、密钥、配置映射、角色、集群角色、角色绑定、集群角色绑定、部署以及服务等。

bash 复制代码
kubectl get deployments -n kubernetes-dashboard
kubectl get svc
kubectl get pods
kubectl get pods -n kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard

在上述截图中,可以看到类型为"NodePort"的 Kubernetes 仪表盘服务已经创建。这意味着仪表盘将可通过节点的任意 IP 地址以及 NodePort"32304"进行访问(在你的集群中,服务对应的端口可能有所不同)。

使用以下命令获取节点的 IP 地址,后续步骤中会用到这些 IP。

bash 复制代码
kubectl get nodes -o wide

设置用于访问 Kubernetes 仪表盘的服务账号

要访问 Kubernetes 仪表盘,你需要有一个令牌(token)。要创建令牌,首先需要创建一个服务账号。

创建一个新文件,并添加以下内容来创建服务账号。你也可以从我的Github仓库下载该对象文件。

bash 复制代码
vim admin-sa.yml
cat admin-sa.yml
yaml 复制代码
apiVersion: v1
kind: ServiceAccount
metadata:
  name: rahul-admin
  namespace: kube-system

有了对象文件后,执行以下命令来创建服务账号。

bash 复制代码
kubectl apply -f admin-sa.yml

现在需要将服务账号"rahul-admin"与集群角色"cluster-admin"相关联。创建一个包含以下内容的新文件来创建集群角色绑定(ClusterRoleBinding),或者点击此处从我的 Github 仓库下载对象文件。

bash 复制代码
vim admin-rbac.yml
cat admin-rbac.yml
yaml 复制代码
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: rahul-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: rahul-admin
    namespace: kube-system

执行以下命令来创建"ClusterRoleBinding"。

bash 复制代码
kubectl apply -f admin-rbac.yml

现在,我们已经将"集群角色(ClusterRole)"------"cluster-admin"绑定到了"服务账号(ServiceAccount)"------"rahul-admin"上。

接下来就可以获取用于登录 Kubernetes 仪表盘的令牌了。要获取令牌,执行以下命令。

bash 复制代码
SA_NAME="rahul-admin"
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print $1}')

在上述截图中,可以看到用于登录 Kubernetes 仪表盘的令牌。复制该令牌,然后通过"节点 IP:节点端口(NodeIP:NodePort)"访问仪表盘的 URL。

这里,节点 IP 是集群中任意节点的 IP 地址,节点端口是我们创建的服务的端口(本文示例中是 32304,你实际操作时端口可能不同)。

访问 Kubernetes 仪表盘

访问"节点 IP:节点端口"对应的 URL 后,会看到如下界面。在此界面中,选择"令牌(Token)"选项,输入在上一步获取的令牌,然后点击"登录(Sign in)"按钮。

成功登录后,应该会看到如下所示的 Kubernetes 仪表盘界面。

在屏幕顶部,甚至可以更改命名空间并查看其中的资源。现在你就可以尽情探索 Kubernetes 仪表盘了。

结论

在本文中,我们在集群中部署了拥有仪表盘所需的所有 Kubernetes 对象。我们创建了服务账号和集群角色绑定,以此获取访问 Kubernetes 仪表盘的令牌,因为该仪表盘不能直接访问。这个仪表盘可以帮助你了解集群情况,并查看集群中包含的所有对象。

相关链接

雨云 - 新一代云服务提供商: https://rainyun.ivwv.site

我的博客:https://blog.ivwv.site

相关推荐
黑泽明*3 分钟前
云计算与服务器基础入门指南
服务器·云计算·perl
Lalolander12 分钟前
WorkBuddy App 可以连接电脑吗?远程操控桌面端怎么用?
运维·电脑·腾讯云ai代码助手·workbuddy
小HANN14 分钟前
保姆级实战:CentOS7 搭建 LAMP 环境部署 WordPress 个人博客
linux·运维·服务器·经验分享
猫吃了源码16 分钟前
Ubuntu24系统安装部署最新版K8s(Kubernetes)1.36保姆级详细教程
云原生·容器·kubernetes
mayaairi20 分钟前
JS DOM与事件处理完全指南
服务器·前端·javascript
前端 贾公子23 分钟前
Linux云服务器安装与PostgreSQL安装
运维·服务器
严谨的麻辣烫24 分钟前
批量静态 IP 如何管理?用 Python 建立一个简单的 IP 资源监控方案
运维·服务器·网络·python·tcp/ip
智恒百亿30 分钟前
企业 AI 推理本地化部署:GPU 服务器选型技术分析(2026 年 8 月)
大数据·服务器·人工智能
BugShare37 分钟前
告别来回切换,Navop:一站式整合数据库、SSH、终端与 AI 的开发运维工作台
运维·数据库·ssh
奈斯先生Vector1 小时前
从“能调用”到“可替换”:Coze 多模型 API 编排层设计指南
linux·运维·人工智能·ubuntu·平面·ios