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

ops/2024/12/15 14:41:51/

前言

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

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

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

准备工作

服务器准备

必要前提:

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

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

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

创建雨云服务器

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

  • 点击 云产品服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

https://img-blog.csdnimg.cn/img_convert/4c16271f125adea69da6ed9e7b2a4226.png

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

https://img-blog.csdnimg.cn/img_convert/414570cd3da48d4cc4bf51489992000b.png

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器Win+R 打开运行窗口,输入 powershell 后点击确定。

https://img-blog.csdnimg.cn/img_convert/c8afbeb764459a37a8451dd2ed8eeff1.png

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器

https://img-blog.csdnimg.cn/img_convert/ea5814f1d1068ca9fa2bb94631cfbdf1.png

  • 到此为止,我们的云服务器就远程连接上了。

开始部署

部署 Kubernetes 仪表盘

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

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

vim kubernetes-dashboard-deployment.yml

内容:

kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:ports:- port: 443targetPort: 8443selector:k8s-app: kubernetes-dashboardtype: NodePort

image.png

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

kubectl apply -f kubernetes-dashboard-deployment.yml

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

kubectl get deployments -n kubernetes-dashboard
kubectl get svc
kubectl get pods
kubectl get pods -n kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard

image.png

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

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

kubectl get nodes -o wide

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

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

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

vim admin-sa.yml
cat admin-sa.yml
apiVersion: v1
kind: ServiceAccount
metadata:name: rahul-adminnamespace: kube-system

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

kubectl apply -f admin-sa.yml

image.png

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

vim admin-rbac.yml
cat admin-rbac.yml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: rahul-admin
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:- kind: ServiceAccountname: rahul-adminnamespace: kube-system

执行以下命令来创建“ClusterRoleBinding”。

kubectl apply -f admin-rbac.yml

image.png

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

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

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

image.png

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

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

访问 Kubernetes 仪表盘

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

image.png

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

image.png

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

image.png

结论

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

相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site


http://www.ppmy.cn/ops/142133.html

相关文章

使用DuckDB 加载和清洗数据

DuckDB CLI是允许用户直接从命令行与DuckDB交互的工具。前文你看到了如何使用Python与DuckDB交互。但是,有时你只是想直接使用数据库—例如在创建新表、从不同数据源导入数据以及执行与数据库相关的任务时。在这种情况下,直接使用DuckDB CLI要有效得多。…

AI来了,云原生更稳了

不了解AI的时候,往往会将其视为洪水猛兽,因为AI确实具有颠覆一切的巨大能量;但是当你慢慢接近它、拥抱它甚至尝试驾驭它,你会发现AI如同其他许多新技术一样,都需要扎根的土壤、生长的养分和成熟过程中适宜的环境等。 “…

【0x000A】HCI_Reject_Connection_Request命令详解

目录 一、命令概述 二、命令格式及参数说明 2.1. HCI_Reject_Connection_Request命令格式 2.2. 参数说明 2.2.1. BD_ADDR(蓝牙设备地址) 2.2.2. Reason(拒绝原因) 三、返回事件及参数说明 3.1. 返回参数 3.2. 生成的事件…

Django结合websocket实现分组的多人聊天

其他地方和上一篇大致相同,上一篇地址点击进入, 改动点1:在setting.py中最后再添加如下配置: # 多人聊天 CHANNEL_LAYERS {"default":{"BACKEND": "channels.layers.InMemoryChannelLayer"} }因此完整的se…

力扣.——560. 和为 K 的子数组

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入:nums [1,2,3], k…

vue依据下拉框选择其余信息

下拉框选择内容后&#xff0c;其余input框与该下拉框相关的内容实时回显,用change加方法 <el-row><el-col :span"12"><el-form-item label"选择站点" prop"resourcesId"><el-select v-model"form.resourcesId" …

【Linux网络】网络基础:传输层UDP/TCP协议(一)

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 传输层UDP/TCP协议 &#x1f4d2;端口号&#x1f4dc;UDP协议UDP协议端格式UDP的特点UDP的缓…

【知识科普】工作流引擎activiti详细介绍

工作流引擎activiti 概述一、概述二、主要特点三、核心组件四、应用场景五、数据库表结构六、搭建与使用七、优势与局限性 核心组件介绍一、Activiti Engine&#xff08;流程引擎&#xff09;二、建模组件三、管理组件四、其他核心组件 如何实现审批流流转一、准备工作二、定义…