当前位置: 首页 > news >正文

K8s部署dashboard平台和基本使用

Kubernetes 的默认 Dashboard 主要用于基本的资源查看与管理,如查看 Pod、Service 等资源的状态,进行简单的创建、删除操作 。然而,在企业级复杂场景下,其功能显得较为局限。

与之相比,开源的 Kubernetes Dashboard 增强版工具 ——Dashboard UI ,为用户带来了更强大的功能体验。它在 Kubernetes 原生 Dashboard 基础上进行了拓展,提供了更丰富的资源管理视角。

在界面展示上,Dashboard UI 不仅能直观呈现 Pod、Deployment、Service 等常见资源,还对 ConfigMap、Secret 等配置类资源进行了更清晰的分类展示,方便用户快速定位和管理。同时,它支持多集群管理,用户可在一个界面中便捷切换不同的 Kubernetes 集群,查看各集群资源使用情况。

在操作便利性方面,Dashboard UI 增加了更多可视化操作选项。例如,对于 Pod,用户可以直接在界面上查看其详细日志,无需再通过命令行工具;在进行 Deployment 更新时,提供了可视化的滚动更新进度条,实时展示更新过程,让用户对操作状态一目了然。

此外,Dashboard UI 还具备强大的监控与诊断功能。它能实时监控资源的 CPU、内存等使用指标,并以图表形式直观呈现,方便用户及时发现性能瓶颈;当出现异常时,提供了详细的事件追溯功能,帮助用户快速定位问题根源。

不过,由于其功能的丰富性和复杂性,Dashboard UI 对集群的网络环境和资源配置也有一定要求。例如,在多集群管理场景下,需要稳定的网络连接以保障数据实时同步;在进行大规模资源监控时,会占用一定的集群计算和存储资源。但总体而言,对于追求高效、便捷管理 Kubernetes 集群的企业和开发者来说,Dashboard UI 是一款极具价值的工具。

一、实验目的

1、掌握dashboard 的安装部署

2、熟悉图像化部署任务:产生pod---定义服务--验证访问

二、实验内容:

1、配置步骤

一、Helm 安装方法

1. 使用官方脚本一键安装(推荐)【若无法下载即使用手动下载安装】

#原理:脚本会自动下载最新版本的 Helm 二进制文件并安装到系统路径。

curl -fsSL -o get_helm.sh  https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3

chmod 700 get_helm.sh  

sudo ./get_helm.sh

#验证:执行,若显示客户端版本信息则安装成功。

helm version

2. 手动下载安装(适用于内网/离线环境)

# 下载对应版本(示例为 v3.12.3)

wget https://get.helm.sh/helm-v3.12.3-linux-amd64.tar.gz  

tar -zxvf helm-v3.12.3-linux-amd64.tar.gz  

sudo mv linux-amd64/helm /usr/local/bin/helm

#验证:执行,若显示客户端版本信息则安装成功。

helm version

#添加官方仓库

helm repo add stable https://charts.helm.sh/stable  

helm repo update

```

- **步骤说明**:

  1. 根据系统架构(如 `linux-amd64`)选择版本。

  2. 解压后将 `helm` 文件移动到系统 PATH 目录(如 `/usr/local/bin`)。

  3. 验证安装:`helm version`。

---

3.默认情况下不会部署 Dashboard,可以通过以下命令部署:
(1)添加 kubernetes-dashboard 仓库
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/

(2)使用 kubernetes-dashboard Chart 部署名为 kubernetes-dashboard 的 Helm Release

helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard

#验证部署

#多了一个命名空间

kubectl get namespaces   

#kubernetes-dashboard 产生的pod

kubectl get pod -n kubernetes-dashboard

#查看service,其中 kubernetes-dashboard-kong-proxy 是我们访问的主要pod;

kubectl get svc -A

二、访问 Dashboard 用户界面

1、执行如下指令:启动dashboard

#kubectl 会使得 Dashboard 可以通过 [https:10.1.1.157//:8443](https://10.1.1.157:8443/) 访问

kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443 --address 0.0.0.0  &

只能通过执行这条命令的机器进行访问,登录需要token,且token有时效性​

2、创建 ServiceAccount 及ClusterRoleBinding角色绑定

K8S有两种用户:User 和 Service Account,User 给人用,Service Account 给进程用,让进程有相关权限,Dashboard 是一个进程,我们就可以创建一个Service Account 给它

(1)第一种方式,通过yaml 文件创建
vim dashboard-admin.yaml apiVersion: v1
kind: ServiceAccount
metadata:name: admin01namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin01
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin01namespace: kubernetes-dashboardkubectl apply -f dashboard-admin.yaml

(2)或者通过命令方式创建用户和绑定角色
# 创建管理员账户  
kubectl create serviceaccount admin01 -n kubernetes-dashboard  
kubectl create clusterrolebinding admin01 --clusterrole=cluster-admin \
--serviceaccount=kubernetes-dashboard:dashboard-admin  
# 获取 Token  
kubectl -n kubernetes-dashboard create token admin01 
3、创建对应服务账号的token
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard
EOF

kubectl -n kubernetes-dashboard create token admin-user

4.自定义token有效期

默认token 的有效时间为1小时,可以通过 --duration 自定义有效期;

kubectl -n kubernetes-dashboard create token admin-user  --duration 24h

5、修改端口类型,可以实现外部访问
# 修改端口类型
kubectl patch svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'
# 若需要指定端口,可以指定一个固定的 nodePort,这里修改为30083:
kubectl patch svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard --type='json' -p '[{"op":"add","path":"/spec/ports/0/nodePort","value":30083}]'#或者
kubectl  edit -n kubernetes-dashboard svc  kubernetes-dashboard-kong-proxy
6、扩展内容
(1)权限查询

role: 名称空间的系统权限

clusterrole:全局权限

(2)系统权限

查询某一个名称空间内的所有系统权限

kubectl -n kube-system get role

查询名称空间内的系统权限的详细信息

kubectl -n kube-system describe role kube-proxy

(3)全局权限

查看所有全局权限

kubectl -n kube-system get clusterrole

指定查看某一个权限的详细信息

kubectl -n kube-system describe clusterrole admin

(4)查看用户

kubectl get serviceaccounts [用户名] -n kubernetes-dashboard

三、验证

1、登录后创建pod

2、创建的方式有三种:

直接编写yaml或json 文件;导入已经写好的yaml或json;通过表单创建

点击对应的pod 能看到详细信息;类似与 kubectl describe pod xx

三、实验结论

通过本次实验,成功完成了以下任务:

使用 Helm 工具安装并部署了 Kubernetes Dashboard。

创建了具有管理员权限的 ServiceAccount,并通过 Token 登录 Dashboard。

验证了 Dashboard 的基本功能,包括资源查看和任务部署。

掌握了通过修改服务类型实现外部访问的方法。

四、问题与解决方案

问题:Token 默认有效期为 1 小时。
解决:通过 --duration 参数延长有效期,例如 --duration 24h。

问题:端口转发命令终止后无法访问 Dashboard。
解决:将服务类型改为 NodePort 或 LoadBalancer 以实现持久访问。

http://www.dtcms.com/a/342892.html

相关文章:

  • MySQL:MVCC机制及其在Java秋招中的高频考点
  • AutoTrack-IR-DR200平台的构建与实现过程
  • python采集义乌购(yiwugo)商品详情API接口,json数据返回
  • 透射TEM 新手入门:快速掌握核心技能
  • 【每日一道算法题 day5】盛最多水的容器 (Container With Most Water) - LeetCode 题解
  • 深度学习之NLP基础
  • 【React】tab切换功能和排序实现,classnames工具优化类名控制
  • Java基础环境jdk和maven安装及配置+开源项目下载及编译打包教程
  • Flutter如何通过GlobalKey调用组件内的方法
  • 微服务的编程测评系统13-我的竞赛列表-elasticSearch
  • 与H5交互,与flutter的交互
  • 求解三位数
  • 深度解析DeepSeek V3.1 :6850 亿参数开源模型如何以 71.6% 编码得分、68 倍成本优势重构全球 AI 竞争格局
  • 使用postman模拟http请求webservice服务
  • 企业如何用外贸进销存系统管理好库存产品?
  • Docker安装elasticsearch以及Kibana、ik分词器
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十三)
  • 相似图像处理程序
  • mac的m3芯使用git
  • 1.2 亿篇论文数据集,多学科学术语料库,涵盖医学、化学、生物学、人文、物理、工程、数学、生态、经济与计算机科学,用于 NLP、知识图谱与大模型训
  • 意象驱动的深层语义:感知认知统一对自然语言处理与知识图谱的影响
  • 数据结构——二叉树(Binary Tree)
  • 自然语言处理NLP L4: 高级语言模型——四种泛化平滑方式
  • Spring全家桶之全局异常处理
  • Spring Boot生态中ORM对数据治理的支持有哪些?
  • Ubuntu22.04配置网络上网
  • linux-ubuntu里docker的容器portainer容器建立后如何打开?
  • Maven无法修改镜像,镜像在IDEA里不生效
  • 室外和室内 PoE 延长器有什么区别?
  • [CSP-J2020] 直播获奖