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 以实现持久访问。