主要观点:实时应用已融入日常生活,如视频通话等,需快速响应,WebRTC 是多数此类应用的开源标准,但在云端扩展其应用有难度,因为这类应用计算量大,仅靠 CPU 不够,需监测延迟而非 CPU 使用率来解决问题。文中介绍了在 Google Kubernetes Engine(GKE)上构建 Docker 化的 WebRTC 应用,包括使用 GPU 节点、Prometheus 和 Grafana 监控以及基于延迟的自动扩展,还分享了启动和关闭脚本、交互式演示和可视化、部署 WebRTC 应用、监测延迟、基于延迟的自动扩展等方面的内容,并总结了 CPU 与 GPU 及自动扩展在实时扩展中的权衡、所学到的经验教训和最佳实践,最后得出结论,扩展 WebRTC 不仅要增加节点,还要保持用户通话流畅。
关键信息:
- WebRTC 是多数实时应用的标准,在云端扩展有难度。
- 构建的系统包括 GKE 集群、NVIDIA 设备插件、WebRTC 应用、Prometheus 和 Grafana 等。
- 编写了启动和关闭脚本以节省成本和快速测试。
- 建立了 HTML 仪表盘来模拟请求和可视化性能。
- 介绍了基于延迟的自动扩展设置和规则。
- 比较了 CPU 仅、GPU 启用和自动扩展三种设置的优缺点。
- 总结了经验教训和最佳实践。
重要细节:
- 水平 Pod 自动缩放器(HPA)通常以 CPU 利用率为指标,但不适用于 WebRTC。
- 系统中使用 PromQL 查询来监测 p95 延迟等指标。
- 节点选择器问题导致 pod 挂起,需正确标签。
- 需注意 GPU 配额、集群操作重叠等问题。
- 最佳实践包括基于 SLO 扩展、收集用户感知指标等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。