Perfetto Bigtrace 在 Kubernetes 上的部署指南
前言
Perfetto Bigtrace 是一个专为处理大规模追踪数据(O(百万)级别)而设计的分布式系统,它通过在 Kubernetes 集群上部署多个 TraceProcessor 实例来实现高效的数据处理。本文将详细介绍如何在 Google Kubernetes Engine (GKE) 上部署 Bigtrace 系统。
Bigtrace 架构概述
Bigtrace 系统由四个核心组件构成:
-
客户端接口:
- Python API:集成在 Perfetto Python 库中,提供类似 TraceProcessor 和 BatchTraceProcessor 的接口
- Clickhouse:数据仓库解决方案,提供 SQL 接口
- Superset:可视化界面,支持数据探索和图表生成
-
协调器(Orchestrator):
- 系统的核心组件
- 负责将追踪数据分片到各个 Worker 节点
- 管理查询结果的流式传输
-
工作节点(Worker):
- 每个 Worker 运行一个 TraceProcessor 实例
- 独立处理分配的追踪数据和查询任务
- 运行在 Kubernetes 的独立 Pod 中
-
对象存储(GCS):
- 存储所有可查询的追踪数据
- Worker 节点从此处获取数据
- 支持本地存储用于测试环境
部署准备
环境要求
- GCP 项目:需要一个有效的 Google Cloud 项目
- 存储服务:已配置的 Google Cloud Storage (GCS)
- Kubernetes 集群:Google Kubernetes Engine (GKE)
- 工具链:
- gcloud 命令行工具
- 本地 Perfetto 代码库
服务账号权限
除了默认的 Compute Engine 服务账号权限外,还需要添加:
- Storage Object User 权限:允许 Worker 节点获取 GCS 认证令牌
集群配置
创建 GKE 集群
- 在 GCP 控制台导航至 Kubernetes Engine
- 选择创建标准集群
- 基础配置:
- 选择位置类型(推荐使用区域级部署以获得最佳负载均衡性能)
- 节点池配置:
- 选择适当的 VM 类型(推荐 e2-standard-8 或更高配置)
- 网络配置:
- 启用 L4 内部负载均衡器的子集功能(VPC 内内部负载均衡必需)
- 完成集群创建
集群认证
执行以下命令获取集群凭证:
gcloud auth login
gcloud container clusters get-credentials [CLUSTER_NAME] --zone [ZONE] --project [PROJECT_NAME]
组件部署流程
协调器(Orchestrator)部署
构建并推送镜像
-
配置 Docker 使用 Google Cloud Artifact Registry:
gcloud auth configure-docker [ZONE]-docker.pkg.dev
-
构建并推送镜像:
docker build -t bigtrace_orchestrator infra/bigtrace/docker/orchestrator docker tag bigtrace_orchestrator [ZONE]-docker.pkg.dev/[PROJECT_NAME]/[REPO_NAME]/bigtrace_orchestrator docker push [ZONE]-docker.pkg.dev/[PROJECT_NAME]/[REPO_NAME]/bigtrace_orchestrator
应用部署配置
-
修改
orchestrator-deployment.yaml
:- 更新镜像路径
- 配置 CPU 资源请求和限制
-
应用部署和服务配置:
kubectl apply -f infra/bigtrace/gke/orchestrator-deployment.yaml kubectl apply -f infra/bigtrace/gke/orchestrator-ilb.yaml
工作节点(Worker)部署
构建并推送镜像
docker build -t bigtrace_worker infra/bigtrace/docker/worker
docker tag bigtrace_worker [ZONE]-docker.pkg.dev/[PROJECT_NAME]/[REPO_NAME]/bigtrace_worker
docker push [ZONE]-docker.pkg.dev/[PROJECT_NAME]/[REPO_NAME]/bigtrace_worker
应用部署配置
-
修改
worker-deployment.yaml
:- 更新镜像路径
- 设置副本数量
- 配置 CPU 资源
-
应用部署和服务配置:
kubectl apply -f infra/bigtrace/gke/worker-deployment.yaml kubectl apply -f infra/bigtrace/gke/worker-service.yaml
Clickhouse 部署
构建并推送镜像
docker build -t clickhouse infra/bigtrace/bigtrace_clickhouse
docker tag clickhouse [ZONE]-docker.pkg.dev/[PROJECT_NAME]/[REPO_NAME]/clickhouse
docker push [ZONE]-docker.pkg.dev/[PROJECT_NAME]/[REPO_NAME]/clickhouse
应用部署配置
-
按顺序应用所有配置文件:
kubectl apply -f infra/bigtrace/clickhouse/clickhouse-config.yaml kubectl apply -f infra/bigtrace/clickhouse/pvc.yaml kubectl apply -f infra/bigtrace/clickhouse/pv.yaml kubectl apply -f infra/bigtrace/clickhouse/clickhouse-deployment.yaml kubectl apply -f infra/bigtrace/clickhouse/clickhouse-ilb.yaml
-
关键配置项:
- 更新镜像路径
- 设置 Orchestrator 服务地址
部署验证
执行以下命令检查部署状态:
kubectl get deployments
预期输出应显示所有组件(orchestrator、worker 和 clickhouse)均已成功部署。
客户端接入
Clickhouse 客户端连接
使用 clickhouse-client 连接时需指定以下参数:
./clickhouse client --host [ADDRESS] --port [PORT] \
--receive-timeout=1000000 \
--send-timeout=100000 \
--idle_connection_timeout=1000000
Superset 部署
Superset 提供两种部署方式:
- 开发环境:在 VM 中部署单实例
- 生产环境:在 Kubernetes 上跨 Pod 部署
部署后,可通过 clickhouse-connect 将 Superset 连接到 Clickhouse 服务。
最佳实践
-
资源规划:
- 根据预期负载合理设置 Worker 副本数量
- 为每个组件分配适当的 CPU 资源
-
监控与调优:
- 实施集群监控方案
- 根据性能指标调整资源配置
-
安全考虑:
- 限制服务暴露范围
- 实施适当的访问控制策略
通过以上步骤,您可以在 GKE 上成功部署一个完整的 Perfetto Bigtrace 系统,为大规模追踪数据处理提供强大的分布式计算能力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考