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: admin01
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin01
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin01
  namespace: kubernetes-dashboard

kubectl 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-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: 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 以实现持久访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值