9·基础入门入门

Kubernetes Dashboard

kubernetesdashboardui

Kubernetes Dashboard

学习目标

  1. 了解 Kubernetes Dashboard 的作用
  2. 掌握安装和访问 Dashboard 的方法
  3. 学会使用 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 绑定
• 创建具有足够权限的用户

小结

要点说明
DashboardKubernetes 官方 Web UI
安装方式Minikube 插件或手动安装
访问方式minikube dashboard, kubectl proxy
认证方式Token, Kubeconfig
主要功能查看资源、管理资源、监控状态
安全建议RBAC、HTTPS、网络限制
替代方案Lens, Rancher, Octant

练习编辑器

bash
Loading...

继续学习

完成本课后,建议继续学习下一课「kubectl 基础命令」 以巩固所学知识。