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 [email protected] 回车后,首次需要输入 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

相关推荐
小卓笔记2 小时前
keepalived应用
linux·服务器·数据库
勘察加熊人2 小时前
angular九宫格ui
javascript·ui·angular.js
Hurry64 小时前
Rocky Linux 9.x 基于 kubeadm部署k8s 1.32
linux·运维·kubernetes
zxnbmk5 小时前
ansible速查手册
linux·服务器·ansible
小卓笔记5 小时前
DNS主从服务器
运维·服务器
Muisti5 小时前
TCP 通信流程图
服务器·网络·windows
book01215 小时前
Ansible 自动化运维
运维·自动化·ansible
阿正的梦工坊5 小时前
Linux 命令:按内存使用大小排序查看 PID 的完全指南
linux·运维·服务器
IT小饕餮6 小时前
linux 基础网络配置文件
linux·服务器·网络
未来之窗软件服务6 小时前
lite_avatar 数字人命令行-安装故障解决
linux·运维·服务器·数字人