Kubernetes Dashboard
学习目标
- 了解 Kubernetes Dashboard 的作用
- 掌握安装和访问 Dashboard 的方法
- 学会使用 Dashboard 管理集群资源
核心概念
Dashboard 是什么
定义:
• Kubernetes 官方 Web UI
• 可视化管理集群
• 查看和管理资源
功能:
┌─────────────────────────────────────┐
│ Dashboard │
│ • 查看集群状态 │
│ • 管理工作负载 │
│ • 查看日志 │
│ • 执行基本操作 │
│ • 监控资源使用 │
└─────────────────────────────────────┘
适用场景:
• 快速查看集群状态
• 非技术人员使用
• 调试和排错
• 演示和培训
Dashboard 架构
访问流程:
┌─────────────────────────────────────┐
│ 浏览器 │
│ ↓ │
│ Dashboard UI │
│ ↓ │
│ API Server │
│ ↓ │
│ Kubernetes 资源 │
└─────────────────────────────────────┘
部署方式:
• 官方 Dashboard (推荐)
• 第三方 UI (Lens, Rancher, 等)
实践练习
练习 1:安装 Dashboard
# 方法 1: 使用 Minikube 插件 (推荐)
minikube addons enable dashboard
# 方法 2: 手动安装
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
# 查看 Dashboard Pod
kubectl get pods -n kubernetes-dashboard
# 预期输出:
# NAME READY STATUS RESTARTS AGE
# dashboard-metrics-scraper-xxx 1/1 Running 0 1m
# kubernetes-dashboard-xxx 1/1 Running 0 1m
练习 2:访问 Dashboard
# 方法 1: Minikube 命令 (推荐)
minikube dashboard
# 自动打开浏览器
# 方法 2: kubectl proxy
kubectl proxy
# 访问: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
# 方法 3: NodePort
kubectl -n kubernetes-dashboard edit service kubernetes-dashboard
# 修改 type: ClusterIP 为 type: NodePort
minikube service kubernetes-dashboard -n kubernetes-dashboard
# 方法 4: 端口转发
kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard 8443:443
# 访问: https://localhost:8443
练习 3:获取访问令牌
# 创建管理员用户
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
EOF
cat <<EOF | kubectl apply -f -
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
# 或者获取长期令牌
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
name: admin-user-secret
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: admin-user
type: kubernetes.io/service-account-token
EOF
kubectl -n kubernetes-dashboard get secret admin-user-secret -o jsonpath='{.data.token}' | base64 -d
练习 4:Dashboard 界面导航
主要功能模块:
1. 概览 (Overview)
• 集群状态摘要
• 资源使用情况
• 最近事件
2. 工作负载 (Workloads)
• Deployments
• ReplicaSets
• Pods
• Jobs
• CronJobs
3. 服务发现 (Service)
• Services
• Ingresses
4. 配置 (Config)
• ConfigMaps
• Secrets
5. 存储 (Storage)
• PersistentVolumes
• PersistentVolumeClaims
6. 集群 (Cluster)
• Namespaces
• Nodes
• Roles
• ClusterRoles
练习 5:查看资源
在 Dashboard 中:
1. 查看 Pods
• 点击 "工作负载" → "Pods"
• 查看状态、重启次数、IP
• 点击 Pod 名称查看详情
2. 查看 Deployments
• 点击 "工作负载" → "Deployments"
• 查看副本数、状态
• 执行扩缩容、更新、删除
3. 查看 Services
• 点击 "服务发现" → "Services"
• 查看类型、端口、Endpoints
• 查看关联的 Pods
4. 查看日志
• 点击 Pod 名称
• 点击 "日志" 标签
• 实时查看日志
练习 6:执行操作
在 Dashboard 中:
1. 创建资源
• 点击右上角 "+" 按钮
• 上传 YAML 文件或输入内容
• 点击 "上传"
2. 扩缩容
• 点击 Deployment 名称
• 点击 "操作" → "扩缩容"
• 输入副本数
• 点击 "扩缩容"
3. 删除资源
• 点击资源名称
• 点击 "操作" → "删除"
• 确认删除
4. 编辑资源
• 点击资源名称
• 点击 "操作" → "编辑"
• 修改 YAML
• 点击 "更新"
练习 7:监控资源
在 Dashboard 中:
1. 查看资源使用
• 需要安装 metrics-server
• minikube addons enable metrics-server
• 查看 CPU 和内存使用
2. 查看事件
• 点击 "集群" → "事件"
• 查看最近事件
• 排查问题
3. 查看节点状态
• 点击 "集群" → "节点"
• 查看节点资源使用
• 查看节点条件
练习 8:使用 Dashboard 调试
调试流程:
1. 查看 Pod 状态
• 状态异常 (Pending, CrashLoopBackOff)
• 查看重启次数
2. 查看 Pod 详情
• 点击 Pod 名称
• 查看容器状态
• 查看环境变量
• 查看卷挂载
3. 查看日志
• 点击 "日志" 标签
• 查看错误信息
• 查看应用输出
4. 查看事件
• 点击 "事件" 标签
• 查看调度失败原因
• 查看资源不足信息
5. 执行命令
• 点击容器名称
• 点击 "执行" 标签
• 输入命令执行
练习 9:Dashboard 安全
# 生产环境安全建议:
1. 使用 RBAC 限制访问
• 创建只读用户
• 限制命名空间访问
2. 使用 HTTPS
• 配置 TLS 证书
• 强制 HTTPS 访问
3. 限制网络访问
• 使用 NetworkPolicy
• 限制访问 IP
4. 审计日志
• 启用审计日志
• 监控异常访问
# 创建只读用户
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: readonly-user
namespace: kubernetes-dashboard
EOF
cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: readonly-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: view
subjects:
- kind: ServiceAccount
name: readonly-user
namespace: kubernetes-dashboard
EOF
练习 10:第三方 Dashboard
常用第三方 Dashboard:
1. Lens
• 桌面应用
• 功能强大
• 支持多集群
2. Rancher
• 企业级管理平台
• 支持多集群
• 完整的 RBAC
3. Kubernetic
• 桌面应用
• 简洁易用
• 实时监控
4. Octant
• VMware 开源
• Web UI
• 插件扩展
安装 Lens (示例):
# 下载 https://k8slens.dev/
# 打开 Lens
# 连接 kubeconfig
常见问题
1. Dashboard 无法访问
问题:无法打开 Dashboard
解决:
• 检查 Pod 是否运行: kubectl get pods -n kubernetes-dashboard
• 检查 Service: kubectl get svc -n kubernetes-dashboard
• 使用正确的访问方式
• 检查防火墙设置
2. 令牌无效
问题:登录时令牌无效
解决:
• 重新生成令牌
• 检查 ServiceAccount 权限
• 检查 RBAC 配置
3. 权限不足
问题:Dashboard 无法访问资源
解决:
• 使用 cluster-admin 角色
• 检查 RBAC 绑定
• 创建具有足够权限的用户
小结
| 要点 | 说明 |
|---|---|
| Dashboard | Kubernetes 官方 Web UI |
| 安装方式 | Minikube 插件或手动安装 |
| 访问方式 | minikube dashboard, kubectl proxy |
| 认证方式 | Token, Kubeconfig |
| 主要功能 | 查看资源、管理资源、监控状态 |
| 安全建议 | RBAC、HTTPS、网络限制 |
| 替代方案 | Lens, Rancher, Octant |
练习编辑器
bash
Loading...