news 2026/4/16 13:59:37

从Dashboard到Metrics-Server:给你的K8s 1.18.6集群装上‘仪表盘’和‘监控仪表’

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从Dashboard到Metrics-Server:给你的K8s 1.18.6集群装上‘仪表盘’和‘监控仪表’

从Dashboard到Metrics-Server:Kubernetes 1.18.6集群可视化监控实战指南

当你成功搭建Kubernetes集群后,接下来的挑战是如何有效管理和监控这个复杂的系统。就像驾驶一辆高性能跑车,如果没有仪表盘和监控系统,你将无法了解引擎状态、油量消耗或行驶速度。本文将带你从零开始,为你的Kubernetes 1.18.6集群安装"仪表盘"(Dashboard)和"监控仪表"(Metrics-Server),实现集群状态的可视化监控。

1. Kubernetes Dashboard:集群管理的可视化控制台

Kubernetes Dashboard是官方提供的Web用户界面,它让你能够:

  • 直观查看集群资源使用情况
  • 部署容器化应用到集群
  • 排查和解决问题
  • 管理集群资源

1.1 部署Dashboard的三种方式对比

在部署Dashboard前,我们先了解不同部署方式的优缺点:

部署方式优点缺点适用场景
官方recommended.yaml简单直接默认配置较基础快速测试环境
自定义NodePort可直接通过节点IP访问需要管理证书开发/测试环境
Ingress + TLS统一入口,安全性高配置复杂生产环境

对于大多数场景,我们推荐使用自定义NodePort方式,它提供了良好的平衡。

1.2 详细部署步骤

首先,下载官方推荐的Dashboard部署文件:

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta5/aio/deploy/recommended.yaml -O dashboard.yaml

接下来,我们需要修改这个文件以支持NodePort访问。找到Service部分,修改为:

kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type: NodePort ports: - port: 443 targetPort: 8443 nodePort: 30008 selector: k8s-app: kubernetes-dashboard

注意:nodePort范围默认为30000-32767,确保选择的端口未被占用

1.3 证书配置最佳实践

默认情况下,Dashboard会使用自动生成的证书,但这可能导致浏览器警告。我们可以创建自定义证书:

mkdir -p dashboard-certs && cd dashboard-certs openssl genrsa -out dashboard.key 2048 openssl req -new -key dashboard.key -out dashboard.csr -subj '/CN=dashboard-cert' openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt -days 365 kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard

1.4 创建管理员账户

Dashboard默认使用RBAC进行权限控制,我们需要创建具有足够权限的ServiceAccount:

cat <<EOF | kubectl apply -f - apiVersion: v1 kind: ServiceAccount metadata: name: dashboard-admin namespace: kubernetes-dashboard labels: k8s-app: kubernetes-dashboard EOF cat <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: dashboard-admin-bind-cluster-role labels: k8s-app: kubernetes-dashboard roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: dashboard-admin namespace: kubernetes-dashboard EOF

获取访问令牌:

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')

1.5 访问与使用技巧

现在可以通过https://<节点IP>:30008访问Dashboard。登录后,你会发现几个实用功能:

  • 工作负载视图:直观展示Deployment、Pod等资源状态
  • 资源使用图表:显示CPU/内存使用趋势(需Metrics-Server支持)
  • 事件查看器:帮助排查Pod启动失败等问题
  • YAML编辑器:直接修改资源定义

安全提示:生产环境应考虑配置Ingress和更严格的网络策略限制访问

2. Metrics-Server:集群资源监控的核心组件

Metrics-Server是Kubernetes集群资源使用数据的聚合器,它:

  • 从各节点的kubelet收集CPU/内存指标
  • 通过Metrics API暴露数据
  • 支持Horizontal Pod Autoscaler (HPA)
  • 为Dashboard提供资源使用数据

2.1 部署Metrics-Server的常见问题

在部署Metrics-Server时,开发者常遇到以下问题:

  1. 证书验证失败:节点kubelet使用自签名证书
  2. 网络连接问题:Metrics-Server无法访问节点
  3. 数据延迟:指标更新不及时
  4. 资源不足:Metrics-Server自身资源限制过低

2.2 详细部署步骤

下载官方部署文件:

git clone https://github.com/kubernetes-sigs/metrics-server.git cd metrics-server/deploy/1.8+/

修改metrics-server-deployment.yaml,添加关键参数:

args: - --cert-dir=/tmp - --secure-port=4443 - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname

这些参数解决了以下问题:

  • --kubelet-insecure-tls:跳过kubelet证书验证
  • --kubelet-preferred-address-types:指定连接kubelet的地址类型

应用所有配置文件:

kubectl apply -f .

2.3 验证安装

等待1-2分钟后,检查Metrics-Server状态:

kubectl get pods -n kube-system | grep metrics-server kubectl top nodes

如果一切正常,你将看到类似输出:

NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% k8s-master 256m 12% 2002Mi 52% k8s-node1 103m 5% 1334Mi 34%

2.4 性能调优建议

对于大型集群,可能需要调整Metrics-Server的资源限制:

resources: requests: cpu: 100m memory: 200Mi limits: cpu: 500m memory: 500Mi

同时,可以调整指标解析频率(默认60秒):

args: - --metric-resolution=30s

3. Dashboard与Metrics-Server集成

成功部署两者后,Dashboard将自动显示资源使用指标。你可以在Dashboard中:

  1. 查看节点资源使用热图
  2. 监控Pod的CPU/内存消耗
  3. 设置资源使用警报阈值
  4. 分析历史使用趋势

3.1 常见集成问题排查

如果Dashboard中看不到资源指标,检查以下方面:

  1. Metrics-Server是否正常运行:

    kubectl logs -n kube-system $(kubectl get pods -n kube-system | grep metrics-server | awk '{print $1}')
  2. API服务是否可用:

    kubectl get apiservices | grep metrics
  3. 节点kubelet是否健康:

    kubectl get nodes -o wide

3.2 高级监控方案

对于生产环境,可以考虑以下增强方案:

  1. Prometheus + Grafana:提供更丰富的监控指标和可视化
  2. 自定义指标采集:支持基于业务指标的自动扩缩容
  3. 长期存储:使用Thanos或VictoriaMetrics存储历史数据
  4. 告警系统:集成Alertmanager实现异常告警

4. 安全加固与最佳实践

4.1 Dashboard安全建议

  1. 启用HTTPS:始终使用HTTPS访问Dashboard
  2. 限制访问IP:通过NetworkPolicy限制访问来源
  3. 定期轮换令牌:管理员令牌应定期更新
  4. 审计日志:记录所有管理操作
  5. 最小权限原则:为不同用户分配精确的RBAC权限

4.2 Metrics-Server安全配置

  1. 启用证书认证(替代--kubelet-insecure-tls):

    # 创建证书签名请求 cat <<EOF | kubectl apply -f - apiVersion: certificates.k8s.io/v1beta1 kind: CertificateSigningRequest metadata: name: metrics-server spec: groups: - system:nodes - system:authenticated usages: - digital signature - key encipherment - server auth request: $(cat server.csr | base64 | tr -d '\n') EOF # 批准请求 kubectl certificate approve metrics-server
  2. 配置网络策略

    apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: metrics-server-allow namespace: kube-system spec: podSelector: matchLabels: k8s-app: metrics-server ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: kubernetes-dashboard policyTypes: - Ingress

4.3 监控系统维护

  1. 定期升级:保持组件版本与集群同步
  2. 资源监控:监控监控系统本身的资源使用
  3. 备份配置:定期备份Dashboard和Metrics-Server的配置
  4. 性能基准测试:在大规模集群前进行压力测试

5. 真实案例:电商平台监控实践

某电商平台在黑色星期五促销期间,通过完善的Kubernetes监控系统成功应对了流量高峰。他们的架构包括:

  1. Dashboard:实时查看所有服务的状态
  2. Metrics-Server:提供基础资源指标
  3. HPA:基于CPU/内存指标自动扩缩容
  4. 自定义指标:基于QPS进行更精确的扩缩容

关键配置:

apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: frontend-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: frontend minReplicas: 3 maxReplicas: 20 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 60 - type: External external: metric: name: requests_per_second selector: matchLabels: app: frontend target: type: AverageValue averageValue: 500

这套系统帮助他们实现了:

  • 秒级自动扩缩容响应
  • 资源利用率提高40%
  • 零人工干预应对流量高峰

6. 故障排除指南

6.1 Dashboard常见问题

问题1:无法访问Dashboard,连接被拒绝

  • 检查Service类型和端口:
    kubectl get svc -n kubernetes-dashboard
  • 验证节点防火墙规则
  • 检查kube-proxy是否正常运行

问题2:登录后显示"没有权限"

  • 验证ServiceAccount和ClusterRoleBinding
  • 检查令牌是否过期
  • 确认上下文是否正确:
    kubectl config current-context

6.2 Metrics-Server常见问题

问题1kubectl top返回"metrics not available yet"

  • 检查Metrics-Server日志:
    kubectl logs -n kube-system deployment/metrics-server
  • 验证APIService是否注册:
    kubectl get apiservice v1beta1.metrics.k8s.io -o yaml
  • 检查节点kubelet状态:
    journalctl -u kubelet -n 50 --no-pager

问题2:指标数据不准确或延迟高

  • 调整Metrics-Server的--metric-resolution参数
  • 增加Metrics-Server资源限制
  • 检查节点负载情况

7. 版本升级与兼容性

7.1 Kubernetes 1.18.6特定注意事项

  1. Dashboard版本:推荐使用v2.0.0+
  2. Metrics-Server版本:v0.3.6+
  3. API兼容性
    • metrics.k8s.io/v1beta1
    • dashboard v1.10.1+ API

7.2 升级路径

  1. 备份现有配置

    kubectl get all,sa,secret,configmap -n kubernetes-dashboard -o yaml > dashboard-backup.yaml kubectl get all,sa,secret,configmap -n kube-system -l k8s-app=metrics-server -o yaml > metrics-server-backup.yaml
  2. 逐步升级策略

    • 先升级Metrics-Server
    • 验证指标收集正常
    • 再升级Dashboard
    • 测试所有功能
  3. 回滚计划

    kubectl apply -f dashboard-backup.yaml kubectl apply -f metrics-server-backup.yaml

8. 扩展阅读与资源

8.1 官方文档

  • Kubernetes Dashboard GitHub
  • Metrics-Server文档
  • Kubernetes监控架构

8.2 性能优化工具

  1. kube-state-metrics:生成关于集群状态的指标
  2. node-exporter:收集节点级指标
  3. cAdvisor:容器监控工具(已集成到kubelet)

8.3 社区最佳实践

  1. 监控分层架构

    • 基础设施层:节点资源
    • 容器层:Pod/Container指标
    • 应用层:业务指标
  2. 告警策略

    • 设置多级阈值(Warning/Critical)
    • 避免告警风暴
    • 实现告警抑制和分组
  3. 可视化原则

    • 每个仪表盘聚焦一个主题
    • 使用一致的配色方案
    • 包含必要的上下文信息

9. 未来趋势与替代方案

随着Kubernetes生态的发展,监控方案也在不断演进:

  1. eBPF技术:更高效的内核级监控
  2. OpenTelemetry:统一的监控标准
  3. 服务网格集成:Istio/Linkerd提供的监控能力
  4. AI驱动的异常检测:自动识别异常模式

对于需要更强大监控功能的用户,可以考虑:

  1. Prometheus Operator:简化Prometheus部署
  2. Thanos:提供长期存储和全局视图
  3. Grafana Loki:日志监控解决方案
  4. Elastic Kubernetes Monitoring:全栈可观测性

10. 总结与实操建议

通过本文,你已经掌握了在Kubernetes 1.18.6集群上部署Dashboard和Metrics-Server的完整流程。在实际操作中,建议:

  1. 从小规模开始:先在测试环境验证配置
  2. 自动化部署:将配置代码化,便于重复使用
  3. 文档记录:记录所有自定义配置和决策原因
  4. 监控监控系统:确保监控系统本身健康运行
  5. 持续优化:根据实际使用情况调整参数

记住,好的监控系统应该:

  • 提供准确的实时数据
  • 帮助快速定位问题
  • 支持容量规划
  • 不影响被监控系统性能
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:58:31

深入 Rust 引用计数智能指针:Rc 与 Arc 从入门到实战

文章目录 深入 Rust 引用计数智能指针&#xff1a;Rc 与 Arc 从入门到实战引用计数&#xff1a;共享所有权的底层逻辑Rc&#xff1a;单线程下的轻量共享什么是 Rc基本用法Rc RefCell&#xff1a;实现单线程共享可变数据Rc 的陷阱&#xff1a;循环引用与 Weak 指针 Arc&#xf…

作者头像 李华
网站建设 2026/4/16 13:57:35

从CTF实战到漏洞挖掘:2025年广西网安赛题WriteUP深度解析

1. 从CTF签到题看信息隐藏技巧 2025年广西网安赛的Misc签到题看似简单&#xff0c;却暗藏玄机。题目给出一个加密的ZIP压缩包&#xff0c;提示需要爆破六位数密码。这里就涉及到CTF比赛中常见的信息隐藏三板斧&#xff1a; 弱密码爆破&#xff1a;使用工具如John the Ripper或f…

作者头像 李华
网站建设 2026/4/16 13:57:33

MSPM0L ADC+DMA实战:用定时器触发实现1.45Msps连续采样(附完整代码)

MSPM0L ADCDMA实战&#xff1a;1.45Msps高采样率系统设计与调优指南 在嵌入式信号采集领域&#xff0c;实现高采样率、低延迟的数据采集一直是工程师面临的挑战。MSPM0系列微控制器凭借其高性能ADC和灵活的DMA架构&#xff0c;为构建1.45Msps级别的采集系统提供了硬件基础。本文…

作者头像 李华
网站建设 2026/4/16 13:57:30

AI智能体在渗透测试中的实战技巧与自动化策略

1. AI智能体如何重塑渗透测试工作流 记得我第一次用AI智能体做渗透测试时&#xff0c;整个人都惊呆了。原本需要3天才能完成的信息收集工作&#xff0c;AI只用了20分钟就给出了更全面的报告。这种效率提升不是简单的量变&#xff0c;而是整个工作模式的质变。 传统渗透测试就…

作者头像 李华
网站建设 2026/4/16 13:55:39

DS4Windows终极指南:5步解决PS4手柄PC游戏兼容性问题

DS4Windows终极指南&#xff1a;5步解决PS4手柄PC游戏兼容性问题 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 你是否曾遇到过这样的尴尬场景&#xff1a;新买的PS4手柄连接到PC后&…

作者头像 李华
网站建设 2026/4/16 13:52:26

惠普OMEN游戏本性能优化神器:OmenSuperHub深度解析与使用指南

惠普OMEN游戏本性能优化神器&#xff1a;OmenSuperHub深度解析与使用指南 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为官方Omen Gaming Hub的臃肿…

作者头像 李华