Kubernetes 性能监控系统搭建

举报
鱼弦 发表于 2025/05/13 09:31:39 2025/05/13
【摘要】 Kubernetes 性能监控系统搭建介绍 (Introduction)Kubernetes 作为云原生时代的容器编排和管理平台,具有高度的动态性、分布式特性和复杂性。在其上运行的应用和服务数量庞大,且 Pod 会频繁地创建、销毁、调度。在这样的环境中,对集群和应用的性能进行有效监控至关重要。性能监控可以帮助我们:识别资源瓶颈(CPU、内存、网络、磁盘 I/O)。诊断应用响应缓慢或不稳定等性...

Kubernetes 性能监控系统搭建

介绍 (Introduction)

Kubernetes 作为云原生时代的容器编排和管理平台,具有高度的动态性、分布式特性和复杂性。在其上运行的应用和服务数量庞大,且 Pod 会频繁地创建、销毁、调度。在这样的环境中,对集群和应用的性能进行有效监控至关重要。性能监控可以帮助我们:

  • 识别资源瓶颈(CPU、内存、网络、磁盘 I/O)。
  • 诊断应用响应缓慢或不稳定等性能问题。
  • 进行容量规划,评估集群是否需要扩容。
  • 检测和分析异常行为。
  • 验证自动扩缩容、调度策略的效果。
  • 保障集群整体的健康和稳定运行。

业界最流行和推荐的开源 Kubernetes 性能监控解决方案是结合 Prometheus(用于指标采集和存储)和 Grafana(用于数据可视化)。本指南将详细介绍如何快速搭建这一监控系统。

引言 (Foreword/Motivation)

传统的监控系统通常依赖于在固定的服务器上安装 Agent,由 Agent 将数据推送到中心监控服务器。然而,在 Kubernetes 动态伸缩、Pod IP 地址不断变化的场景下,这种模式带来了挑战:如何自动发现需要监控的目标?如何处理目标频繁上线下线?

Prometheus 采用了不同的监控模型:拉取 (Pull)。它主动从配置的目标拉取指标数据。结合 Kubernetes 的 Service Discovery 机制,Prometheus 可以非常方便地自动发现并监控 Kubernetes 集群中的节点、Pod、Service 等目标。

Prometheus 擅长处理时间序列数据,并提供了强大的查询语言 PromQL。Grafana 则提供了灵活、美观的仪表盘,可以连接 Prometheus 作为数据源,将采集到的指标数据以图表形式展示,使监控数据一目了然。将 Prometheus 和 Grafana 结合起来,就构成了一套强大的 Kubernetes 性能监控系统。

技术背景 (Technical Background)

  1. Kubernetes 架构: 理解 Kubernetes 集群由控制平面(Master)和工作节点(Worker Nodes)组成,应用运行在 Pod 中,Pod 通过 Service 暴露服务。
  2. 指标 (Metrics): 度量系统或应用性能的数据点,通常是带有时间戳的一系列数值(时间序列数据),例如 CPU 使用率、内存占用、请求计数、延迟等。
  3. Prometheus 数据模型: Prometheus 将所有采集到的数据存储为时间序列,每个时间序列由一个指标名称和一组键值对(标签 Label)唯一标识。标签是多维度的,非常适合在 Kubernetes 中按 Pod、按 Service、按 Namespace 等维度对指标进行过滤和聚合。
  4. Exporter: 一个独立运行的程序,负责从特定的系统或应用中采集指标,并将其转换为 Prometheus 可以拉取的格式(通常通过 HTTP 暴露一个 /metrics 端点)。
    • Node Exporter: 运行在每个节点上,暴露节点级的硬件和操作系统指标(CPU、内存、磁盘、网络)。
    • Kube-state-metrics: 作为一个 Service 运行,暴露 Kubernetes 对象的状态指标(Pod 的状态、Deployment 的副本数、PVC 的状态等)。
    • cAdvisor: Google 开源的容器资源监控工具,通常内置在 Kubelet 中,暴露容器级别的资源使用指标。
    • 应用程序 Exporter: 应用自身可以集成 Prometheus 客户端库,暴露应用内部的业务指标或运行时指标。
  5. Prometheus Operator: 简化在 Kubernetes 中部署和管理 Prometheus 相关组件(Prometheus Server, Alertmanager, Exporters, ServiceMonitor, PodMonitor)的工具。它通过 Kubernetes CRD (Custom Resource Definitions) 提供更声明式的配置方式。
  6. Grafana 数据源和 Dashboard: Grafana 可以连接多种数据源,通过 PromQL 查询从 Prometheus 获取数据,并在 Dashboard 中使用各种面板(图表、表格、文本等)进行可视化展示。

应用使用场景 (Application Scenarios)

  • 资源利用率监控: 查看集群、节点、Pod 的 CPU、内存、网络、磁盘等资源使用情况,避免资源浪费或不足。
  • 应用性能监控: 结合应用程序自身暴露的指标,监控请求量、延迟、错误率等,快速定位应用性能问题。
  • 集群健康检查: 监控关键 Kubernetes 组件(如 API Server, Scheduler, Controller Manager)的状态和性能。
  • 容量规划: 根据历史资源使用趋势,预测未来资源需求。
  • 异常检测与报警: 设置阈值报警,当指标异常时及时通知相关人员。

核心组件及原理 (Core Components and Principles)

我们将搭建的监控系统主要包含以下核心组件及其在 Kubernetes 中的工作原理:

  1. Prometheus Operator:
    • 原理: 作为控制平面运行,监听 Kubernetes API Server 中自定义资源对象(CRs)的变化,如 PrometheusServiceMonitorPodMonitorAlertmanager
    • 作用: 根据这些 CRs,自动创建和管理 Prometheus StatefulSet、Service、ConfigMap 等资源,并自动配置 Prometheus 的抓取目标和服务发现规则。
  2. Prometheus Server:
    • 原理: 部署为 StatefulSet(确保数据持久化),接收 Prometheus Operator 管理的配置。
    • 作用: 根据配置定期(默认 15 秒)从 Exporter 和其他目标拉取(scrape)指标数据。将采集到的时间序列数据存储在本地存储或远程存储中。提供 PromQL 查询接口和 Web UI。
  3. Exporters (Node Exporter, Kube-state-metrics, cAdvisor):
    • 原理: Node Exporter 通常作为 DaemonSet 运行,每个节点一个实例。Kube-state-metrics 通常作为 Deployment 运行。cAdvisor 内置在每个节点的 Kubelet 中,通过 Kubelet 的 /metrics/cadvisor 端点暴露容器指标。
    • 作用: 采集各自负责范围内的指标,并在 /metrics HTTP 端点以 Prometheus 格式暴露。Prometheus 通过 Service Discovery 发现这些 Exporter Pod,并拉取数据。
  4. Grafana:
    • 原理: 部署为 Deployment 或 StatefulSet,对外暴露一个 Service。
    • 作用: 连接 Prometheus 作为数据源,接收用户的 Dashboard 请求,通过 PromQL 查询从 Prometheus 获取数据,并将数据渲染成各种图表在 Dashboard 上展示。通常预置了许多 Kubernetes 相关的 Dashboard 模板。

核心特性 (Core Features - of the Monitoring System)

  • 自动发现监控目标: 利用 K8s Service Discovery 机制和 Prometheus Operator 自动发现 Pod 和 Service。
  • 统一指标采集: 从节点、Pod、容器、Service 以及应用自身采集指标。
  • 强大的查询分析能力 (PromQL): 灵活查询、过滤、聚合、计算时间序列数据。
  • 丰富的数据可视化 (Grafana): 提供美观易用的图表、仪表盘。
  • 可扩展性: 可以通过分片、联邦等方式扩展 Prometheus 的采集和存储能力。
  • 容错性: 通过 Checkpoint 和副本机制保障 Prometheus 数据的安全。
  • 报警功能 (Alertmanager): 与 Alertmanager 集成,实现基于指标阈值的报警通知(本指南侧重监控搭建,报警配置略)。

原理流程图以及原理解释 (Principle Flowchart)

(此处无法直接生成图形,用文字描述核心数据流图)

图示:Kubernetes 性能监控数据流 (Prometheus + Grafana)

+---------------------+       +---------------------+       +---------------------+       +---------------------+
|   Node Exporter     |       | Kube-state-metrics  |       | Kubelet (cAdvisor)  |       |  应用 Pods (Metrics) |
| (节点指标)          | ----> | (K8s对象指标)      | ----> | (容器指标)          | ----> |  (应用业务指标)    |
+---------------------+       +---------------------+       +---------------------+       +---------------------+
         ^                                                              ^
         | Expose Metrics (HTTP /metrics)                               | Discover & Scrape
         |                                                              |
+---------------------+       +---------------------+       +---------------------+
|  Prometheus Operator| ----> |   Kubernetes API    | <---- |     Prometheus      |
| (管理 Prometheus, SC, PC)|   |   (Service Discovery) |       |     Server        |
+---------------------+       +---------------------+       |  (采集, 存储数据)  |
                                                              +---------------------+
                                                                       |
                                                                       v Query Data (PromQL)
                                                              +---------------------+
                                                              |       Grafana       |
                                                              |    (可视化 Dashboard)|
                                                              +---------------------+
                                                                       |
                                                                       v
                                                              +---------------------+
                                                              |      用户          |
                                                              |  (查看监控数据)    |
                                                              +---------------------+

原理解释:

  1. 各种 Exporter (Node Exporter, Kube-state-metrics, 应用自身暴露的 metrics 等) 运行在 K8s 集群中,采集各自负责的指标数据,并通过 HTTP 端点 (/metrics) 暴露。Kubelet 内置的 cAdvisor 也暴露容器指标。
  2. Prometheus Operator 监听 K8s API,发现符合 ServiceMonitorPodMonitor 定义规则的 Service 和 Pod。
  3. Prometheus Server 由 Prometheus Operator 管理,它根据 Service Discovery 结果和 ServiceMonitor/PodMonitor 配置,主动向各 Exporter 的 /metrics 端点发起 HTTP 请求,拉取指标数据。
  4. Prometheus 将拉取到的时间序列数据存储在其内部存储中。
  5. Grafana 连接到 Prometheus 的 API 作为数据源。
  6. 用户在 Grafana Web UI 上选择或创建 Dashboard。Dashboard 中的面板(Panel)包含 PromQL 查询语句。
  7. Grafana 将 PromQL 查询发送给 Prometheus。Prometheus 执行查询并将结果返回给 Grafana。
  8. Grafana 将查询结果渲染成图表、表格等形式显示给用户

环境准备 (Environment Setup)

  1. 正在运行的 Kubernetes 集群: 确保您的集群健康且有足够的资源。
  2. kubectl 命令行工具: 确保已安装并配置好 kubectl,能够正常访问和操作您的 K8s 集群。
  3. Helm 命令行工具: 安装 Helm 3 或更高版本。Helm 是 Kubernetes 的包管理器,我们将使用它来方便地部署 Prometheus Operator 及其整个监控栈。从 Helm 官方网站 获取安装指南。
  4. 互联网连接: 需要能够从 Docker Hub 或其他容器镜像仓库拉取组件镜像。

不同场景下详细代码实现 & 代码示例实现 (Detailed Code Examples & Code Sample Implementation)

部署 Prometheus + Grafana 监控栈的最便捷方式是使用 kube-prometheus-stack 这个 Helm Chart。它打包了 Prometheus Operator, Prometheus Server, Alertmanager, Node Exporter, Kube-state-metrics, Grafana 以及一套默认的 Kubernetes 监控 Dashboard。

部署命令:

  1. 添加 Prometheus Community Helm 仓库:

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    

    输出示例:

    "prometheus-community" has been added to your repositories
    
  2. 更新 Helm 仓库列表:

    helm repo update
    

    输出示例:

    Hang tight while we grab the latest from your repositories...
    ...Successfully got an update from the "prometheus-community" chart repository
    ...
    Update Complete. ⎈Happy Helming!
  3. 创建监控组件的 Namespace (推荐):

    kubectl create namespace monitoring
    

    输出示例:

    namespace/monitoring created
    
  4. 使用 Helm 安装 kube-prometheus-stack Chart: 将监控系统部署到 monitoring 命名空间。

    helm install prometheus prometheus-community/kube-prometheus-stack --namespace monitoring --version 58.5.1 # 使用一个近期稳定版本
    # --version 参数指定安装的版本,请根据需要选择合适的版本
    

    这个命令会输出 Helm 部署过程的日志,包括创建的各种 Kubernetes 资源 (Deployment, StatefulSet, Service, ServiceAccount, ClusterRole, CustomResourceDefinition 等)。整个过程可能需要几分钟。

    输出示例 (部分):

    Release "prometheus" does not exist. Installing it now.
    NAME: prometheus
    LAST DEPLOYED: ...
    NAMESPACE: monitoring
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    USER-SUPPLIED VALUES:
    {}
    
    NOTES:
    ... (这里会有关于如何访问 Grafana 和 Prometheus 的说明)
    

修改默认配置 (Optional):

您可以通过创建 values.yaml 文件并使用 -f 参数传递给 helm install 命令来修改 Chart 的默认配置,例如修改 Prometheus 的存储大小、Grafana 的 Service 类型等。

  • 创建 values.yaml 示例 (修改 Prometheus 持久化存储大小):
    # values.yaml
    prometheus:
      prometheusSpec:
        storageSpec:
          volumeClaimTemplate:
            spec:
              storageClassName: standard # 替换为你集群实际可用的 StorageClass 名称
              accessModes: ["ReadWriteOnce"]
              resources:
                requests:
                  storage: 10Gi # 设置 Prometheus 持久化存储大小为 10GB
    
  • 使用自定义 values.yaml 进行安装:
    helm install prometheus prometheus-community/kube-prometheus-stack --namespace monitoring --version 58.5.1 -f values.yaml
    

运行结果 (Execution Results)

  1. 执行 helm install 命令后,您会在终端看到部署成功的提示信息和关于如何访问服务的说明。
  2. 检查 monitoring 命名空间下的 Pod 状态:
    kubectl get pods -n monitoring
    
    您应该看到一系列 Pod 正在创建并最终进入 Running 状态,包括:
    • prometheus-operator-... (Prometheus Operator 控制平面)
    • prometheus-prometheus-oper-prometheus-... (Prometheus Server 实例)
    • prometheus-kube-state-metrics-... (Kube-state-metrics 实例)
    • prometheus-node-exporter-... (DaemonSet,每个节点一个实例)
    • prometheus-grafana-... (Grafana 实例)
    • prometheus-alertmanager-... (Alertmanager 实例,用于报警)
  3. 检查 monitoring 命名空间下的 Service 状态:
    kubectl get svc -n monitoring
    
    您会看到用于访问 Grafana (prometheus-grafana)、Prometheus (prometheus-prometheus-oper-prometheus) 等组件的 Service。

访问 Grafana Web UI:

Helm Chart 通常会提供访问 Grafana 的说明。最简单的方式(适合测试)是使用 kubectl port-forward 将 Grafana Service 的端口转发到本地。

  1. 找到 Grafana Pod 的名称:
    kubectl get pods -n monitoring -l app.kubernetes.io/name=grafana -o jsonpath='{.items[0].metadata.name}'
    
  2. 执行端口转发:
    kubectl port-forward <your-grafana-pod-name> 3000:3000 --namespace monitoring # 将本地 3000 端口转发到 Grafana Pod 的 3000 端口
    
  3. 在浏览器中访问 http://localhost:3000。默认的用户名和密码通常是 admin/prom-operatoradmin/admin (较旧版本),具体请查看 Helm Chart 的 NOTES 或文档。登录后,您应该能看到预置的 Kubernetes 监控 Dashboard。

测试步骤以及详细代码 (Testing Steps)

测试监控系统是否正常工作,主要在于验证数据采集和可视化是否成功。

  1. 验证 Pod 状态: 确认 monitoring 命名空间下的所有 Pod 都处于 Running 状态。
    kubectl get pods -n monitoring
    
  2. 验证 Prometheus Targets: 确认 Prometheus 正在从各个 Exporter 拉取数据。
    • 步骤: 通过端口转发访问 Prometheus Web UI (默认 9090 端口)。找到 Prometheus Server Pod 名称,执行 kubectl port-forward <your-prometheus-pod-name> 9090:9090 --namespace monitoring
    • 在浏览器中访问 localhost:9090
    • 导航到顶部菜单的 “Status” (状态) -> “Targets” (目标)。
    • 验证: 确认所有预期的 Target (如 kubernetes-service-endpoints, kubernetes-nodes, kube-state-metrics, node-exporter, alertmanager) 的 State 都是 UP。这表明 Prometheus 能够成功发现并从这些目标拉取指标。
    • 代码 (端口转发):
      # 获取 Prometheus Pod 名称
      kubectl get pods -n monitoring -l app.kubernetes.io/name=prometheus,app.kubernetes.io/instance=prometheus -o jsonpath='{.items[0].metadata.name}'
      # 端口转发
      kubectl port-forward <your-prometheus-pod-name> 9090:9090 --namespace monitoring
      
  3. 验证 Grafana 数据源和 Dashboard:
    • 步骤: 按照上面的说明访问 Grafana Web UI 并登录。
    • 导航到左侧菜单的 “Connections” -> “Data sources” (或 “Configuration” -> “Data sources” 在旧版本中)。
    • 验证: 确认 Prometheus 数据源已存在并配置正确(通常会自动创建)。
    • 导航到 Dashboard 页面 (例如,通过 Home -> Dashboards 菜单)。选择一个预置的 Kubernetes 监控 Dashboard (例如 Kubernetes / Compute Resources / Cluster)。
    • 验证: 确认 Dashboard 中的图表能够正常加载并显示数据,曲线随时间变化。
  4. 简单 PromQL 查询测试:
    • 步骤: 在 Prometheus Web UI (localhost:9090) 中,导航到顶部菜单的 “Graph” (图表)。输入一些简单的 PromQL 查询。
    • 代码:
      up # 检查所有目标的健康状态 (1表示UP, 0表示DOWN)
      kube_pod_info # 查看关于 Pod 的元信息
      node_cpu_seconds_total # 查看节点 CPU 使用时间
      container_memory_usage_bytes # 查看容器内存使用量
      
    • 验证: 执行查询,确认能够返回数据和图表。

部署场景 (Deployment Scenarios)

基于 Prometheus + Grafana 的 Kubernetes 性能监控系统是生产环境的标准部署方案:

  1. 专用命名空间: 通常部署在一个独立的 monitoring 命名空间中,与其他应用隔离。
  2. 持久化存储: Prometheus 的时间序列数据需要持久化。在安装 Chart 时,通常会配置 volumeClaimTemplate,由 Kubernetes 动态分配 PersistentVolume (PV) 进行存储。确保您的集群有配置 StorageClass 或预先创建 PV。
  3. 高可用和扩展性: 对于大型或关键集群,可以配置 Prometheus 的高可用(副本集)或使用 Thanos/Cortex 等解决方案实现数据的长期存储、联邦和全局查询。
  4. 报警集成: 配置 Alertmanager,并将其与通知渠道(如 Slack, PagerDuty, 邮件)集成,实现基于指标的报警通知。
  5. 自动化部署: 将 Helm 安装命令集成到您的 IaC (Infrastructure as Code) 流程(如 Terraform, Pulumi, CloudFormation)或 GitOps 工作流(如 ArgoCD, Flux CD)中。
  6. 与日志和追踪集成: 构建一个完整的可观测性平台,将指标、日志(如 ELK Stack, Grafana Loki)和分布式追踪(如 Jaeger, Zipkin, Grafana Tempo)关联起来。

疑难解答 (Troubleshooting)

  1. 监控 Pod 无法启动:
    • 问题: Pod 状态为 Pending, Init:Error, CrashLoopBackOff 等。
    • 排查: kubectl describe pod <pod-name> -n monitoring 查看 Pod 的 Events。常见的错误包括 ImagePullBackOff(镜像拉取失败,检查镜像仓库连通性)、资源不足(CPU/内存请求或限制)、配置卷挂载问题(PV 未 Bound)。
  2. Prometheus Targets DOWN:
    • 问题: Prometheus Web UI -> Status -> Targets 页面显示某些 Target 状态为 DOWN。
    • 排查:
      • Target 不可达: 检查 Target 的 Endpoints IP 和端口是否正确,Prometheus Pod 是否能够访问到这些 IP 和端口(网络策略、防火墙、Service 定义)。
      • Exporter 问题: 检查对应的 Exporter Pod 是否正在运行且健康。尝试直接访问 Exporter 的 /metrics 端点(如果网络允许)。
      • 配置问题: 检查 ServiceMonitorPodMonitorselectorendpoints 配置是否正确匹配目标 Service/Pod 和端口。
  3. Grafana Dashboard 没有数据:
    • 问题: Dashboard 图表显示 “No Data” 或错误。
    • 排查:
      • Prometheus 数据源错误: 检查 Grafana 中 Prometheus 数据源的 URL 是否正确指向 Prometheus Service(通常是 http://prometheus-prometheus-oper-prometheus.monitoring.svc.cluster.local:9090 在集群内部)。
      • Prometheus 没有采集到数据: 回到步骤 2,排查 Prometheus Target 是否 UP。
      • PromQL 查询错误: 检查 Dashboard 面板中的 PromQL 查询语句是否正确。尝试在 Prometheus Web UI 中直接执行相同的查询。
      • 时间范围问题: 检查 Dashboard 的时间范围是否包含有数据的时期。
  4. Prometheus 持久化卷未绑定:
    • 问题: Prometheus Pod 处于 Pending 状态,Events 显示 PersistentVolumeClaim 未能绑定。
    • 排查: 确保集群有配置默认的 StorageClass 或已创建与 Prometheus PVC 要求匹配的 PV。检查 PVC 状态 (kubectl get pvc -n monitoring)。
  5. 监控组件资源占用过高:
    • 问题: Prometheus 或 Node Exporter 等组件消耗大量 CPU/内存。
    • 排查: 对于大型集群,Prometheus 可能需要更多资源。可以通过 values.yaml 调整 Prometheus Server 或 Exporter 的资源请求和限制。优化 Prometheus 配置,减少采集不必要的指标,调整采集间隔。考虑分片或使用更 scalable 的存储方案。

未来展望 (Future Outlook)

Kubernetes 监控系统将继续发展,更加自动化、智能化、集成化:

  • 更深度的 Kubernetes 集成: 利用 Kubernetes 的新特性(如 Gateway API)改进监控数据的暴露和发现。
  • AIOps (AI for IT Operations): 利用机器学习自动化异常检测、根因分析、容量预测、智能报警降噪。
  • eBPF 应用: 利用 eBPF 技术在内核层面采集更细粒度、更低开销的指标和事件。
  • OpenTelemetry 标准化: 统一 Metrics, Logs, Traces 的采集和传输标准,简化可观测性栈的建设。
  • 云原生可观测性平台: 云服务商提供更全面的托管式可观测性服务,降低自建复杂度。

技术趋势与挑战 (Technology Trends 与 Challenges)

技术趋势:

  • 可观测性一体化: 将 Metrics, Logs, Traces 整合到同一个平台进行关联分析。
  • 自动化运维: 利用 AI/ML 自动识别和解决问题。
  • Serverless 监控: 监控 Serverless 工作负载的挑战和解决方案。
  • 分布式追踪普及: 帮助理解微服务间的调用关系和延迟。

挑战:

  • 数据海量化: 处理PB级别甚至更多监控数据,存储和查询成本高。
  • 复杂性管理: 监控架构本身越来越复杂,维护成本高。
  • 报警噪声: 如何设置有效的报警规则,避免误报和漏报(告警疲劳)。
  • 跨平台/混合云监控: 监控跨多个云环境和本地数据中心的 Kubernetes 集群。
  • 安全性: 保障监控数据的安全和隐私。
  • 前端性能监控: 监控用户体验和浏览器端性能。

总结 (Conclusion)

基于 Prometheus 和 Grafana 搭建的监控系统是 Kubernetes 性能监控的事实标准和强大解决方案。通过 Prometheus 的拉取模型和 Service Discovery 实现指标的自动化采集和存储,再利用 Grafana 进行灵活的可视化和分析,可以有效地监控集群、应用和资源的性能状况。

使用 kube-prometheus-stack Helm Chart 可以极大地简化整个监控栈的部署过程。掌握监控组件的工作原理、数据流以及常见的排查方法,对于保障 Kubernetes 集群的健康稳定运行至关重要。未来的监控系统将更加智能化和集成化,但 Prometheus + Grafana 提供的核心能力和模式仍将是基础。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。