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

相关推荐
you秀6 分钟前
openEuler centOS 统信UOS 配置ip的方式。
运维·tcp/ip·centos
网硕互联的小客服12 分钟前
centos系统快捷命令有哪些?
运维·服务器·网络·centos
D^ε^S35 分钟前
GB28181系列三:GB28181流媒体服务器ZLMediaKit
服务器·网络·网络协议·音视频
多敲代码防脱发3 小时前
数据链路层(Java)(MAC与IP的区别)
运维·服务器·网络·java-ee
Geek极安网络安全3 小时前
2024 年安徽省职业院校技能大赛(高职组) “5G 组网与运维”赛项规程
运维·服务器·网络·5g·安全·web安全
疯狂吧小飞牛3 小时前
手搓一个极简远端git库
服务器·git·后端
原谅我很悲3 小时前
在Ubuntu中安装和卸载mysql
mysql·ubuntu
紫菜(Nori)3 小时前
Jenkins 启动 程序 退出后 被杀死问题
运维·jenkins
行思理3 小时前
nginx.conf 请求时间部分参数说明新手教程
运维·服务器·nginx
qq_366740603 小时前
ubuntu+ros新手笔记(一)
linux·笔记·ubuntu