OpenKruise镜像预热实践_王思宇通过 OpenKruise 实现大规模集群 镜像预热&部署发布加速实践 王思宇(酒祝) 阿里云容器服务 技术专家 OpenKruise author & maintainer 目 录 前言:OpenKruise 简介 01 为什么说人人都需要镜像预热 02 OpenKruise 是如何实现镜像预热的 03 如何通过镜像预热加速部署&发布 04 版本前瞻:原地升级与预热的结合 05 为什么说人人都需要镜像预热 第二部分 Pod创建过程 用户的期望: • 极致弹性 • 秒级扩容 • 弹出即可用 实际创建过程: create schedule attach/mount volume cni allotate pull image for sidecar start sidecar pull image for app start app 镜像提前预拉取 create for app start app 预拉取: pull image for sidecar pull image for app base 实际创建过程: OpenKruise 是如何实现镜像预热的 第三部分 OpenKruise的运行架构 节点维度预热定义 apiVersion: apps.kruise.io/v1alpha1 kind: NodeImage metadata:0 码力 | 28 页 | 5.78 MB | 1 年前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台端点 PaaS 发展历程 有状态服务 Job / JobFlow 批计算 流计算 ⽆状态服务 DaemonSet Workloads 多集群调度 混合云调度 跨云迁移 多环境调度 业务数据统⼀调度 集群核⼼服务 Helm 镜像服务 Add-on filebeat / telegraf 监控 ⽇志 HPA Operator 注册中⼼ 配置中⼼ API ⽹关 微服务拓扑 全链路追踪 错误分析 ⽇志分析 主动监控 浏览器监控 APP 监控 慢SQL JVM 诊断 ⾃定义告警 APM 微服务管理 资源管理 标签管理 系统监控 集群管理 服务⽬录 埋点 数据库 ⽇志 画像 标签 报表 推荐 … 代码管理 持续集成 编排部署 应⽤运维 测试管理 协同管理 数据源管理 数据集成 数据开发 数据资产 数据服务 数据应⽤0 码力 | 40 页 | 8.60 MB | 1 年前3
Go 入门指南(The way to Go)的编程语言,这不仅体现在它可以处理使用 UTF-8 编码的字符串,就 连它的源码文件格式都是使用的 UTF-8 编码。Go 语言做到了真正的国际化! 1.2.6 语言的用途 Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并 行的支持,这对于游戏服务端的开发而言是再好不过了。 Go apt-get install bison ed gawk gcc libc6-dev make 你可以在其它发行版上使用 RPM 之类的工具。 3. 获取 Go 源代码 从 官方页面 或 国内镜像 下载 Go 的源码包到你的计算机上,然后将解压后的目录 go 通过命令移动 到 $GOROOT 所指向的位置。 wget https://storage.googleapis.com/golang/go如果你想要在 Windows 下的虚拟机里的 Linux 系统上安装 Go,你可以选择使用虚拟机软件 VMware, 下载 VMware player,搜索并下载一个你喜欢的 Linux 发行版镜像,然后安装到虚拟机里,安装 Go 的流 程参考第 2.3 节中的内容。 2.6 安装目录清单 你的 Go 安装目录( $GOROOT )的文件夹结构应该如下所示: README.md, AUTHORS 0 码力 | 380 页 | 2.97 MB | 1 年前3
Go 入门指南(The way to Go)的编程语言,这不仅体现在它可以处理使用 UTF-8 编码的字符串,就连它的源码文件格 式都是使用的 UTF-8 编码。Go 语言做到了真正的国际化! Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能 分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服 务端的开发而言是再好不过了。 Go apt-get install bison ed gawk gcc libc6-dev make 你可以在其它发行版上使用 RPM 之类的工具。 3. 获取 Go 源代码 从 官方页面 或 国内镜像 下载 Go 的源码包到你的计算机上,然后将解压后的目录 go 通过命令移动到 $GOROOT 所指向的位置。 2.3 在 Linux 上安装 Go 2.3 在 Linux 上安装 Go Go: 如果你想要在 Windows 下的虚拟机里的 Linux 系统上安装 Go,你可以选择使用虚拟机软件 VMware,下载 VMware player,搜索并下载一个你喜欢的 Linux 发行版镜像,然后安装到虚拟机里,安装 Go 的流程参考第 2.3 节中的内容。 2.5 在 Windows 上安装 Go 2.5 在 Windows 上安装 Go - 33 - 本文档使用 书栈(BookStack0 码力 | 466 页 | 4.44 MB | 1 年前3
2.2.2 深入理解BFE• 流量控制能力增强 • BFE平台的主要功能 • 接入和转发,流量调度,安全防攻击,数据分析 BFE部署前 BFE部署后 L4LB 业务A 集群 业务B 集群 业务C 集群 BFE 业务A 集群 业务B 集群 业务C 集群 L4LB BFE平台架构 负载均衡器 vs 名字服务 基于负载均衡器 基于名字服务 方案对比 方案 对流量的控制力 资源消耗 对客户端的要求 BFE转发的主要概念 BFE的转发过程 BFE的路由转发 默认集群 基础转发表 Demo-E 匹配条件 目标集群 www.a.com/a/* Demo-A www.a.com/a/b Demo-B *.a.com/ Demo-C www.c.com ADVANCED_MODE 高级转发表 匹配条件 目标集群 req_host_in(“www.c.com”) && req "deviceid", "x", false) Demo-D1 req_host_in(“www.c.com”) Demo-D 内网流量调度 • 使用场景 • 多数据中心 / 多容器云集群 • 内部服务故障 • 内部服务压力不均 健康检查 • 主动健康检查 • 负载均衡系统持续向RS发送探测请求 • 问题:在响应速度和发送压力间存在权衡 • 在分布式场景下问题更加明显 • 被动健康检查0 码力 | 26 页 | 1.78 MB | 1 年前3
2.7 Golang与高性能DSP竞价系统Redis集群 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • Server端:等待Redis官⽅方(当时还没有的) • Proxy中间代理:twemproxy,维护⽅方便,有⼀一定的性能消 耗 • Client端:配置、维护⿇麻烦,⼏几乎⽆无性能损耗 Redis集群 专业DSP解决⽅方案 Redis集群 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 500个Redis实例 • 占⽤用600G内存 • 峰值QPS在50万 Redis集群 专业DSP解决⽅方案 • Redis没有集群,维护成本⾼高(嗯,当时是还没的) CookieMapping 第⼀一版 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 性能不⽐比Redis差 • SSD优化 • 完备的分布式集群 • ⼆二级索引 • 开源,企业版⽀支持跨机房的集群 • 99%的请求1ms响应0 码力 | 51 页 | 5.09 MB | 1 年前3
云原生go-zero微服务框架设计思考gRPC协议 日志记录 缓存控制 调用鉴权 异常捕获 并发控制 数据统计 监控报警 链路跟踪 自动降载 自动熔断 超时控制 Redis集群 Redis集群 数据库 MySQL集群 MongoDB集群 ClickHouse集群 服务发现 ETCD集群 Redis集群 代码未动,数据先行 ● 定义数据边界 ● 数据库互相隔离,通过RPC访问 ● No join, no pain! 用户 商品0 码力 | 29 页 | 5.70 MB | 9 月前3
1.每秒百万数据点 Go 应用监控系统演进2020 年底面临的问题 ● 无法查询超过 30 天的数据 ● 查询慢,平均时间超过 2 分钟 ● 跨集群指标无法聚合 ● Prometheus 集群经常崩溃 ● 维护时 Prometheus 会丢数据 ● 成本高,需要大容量 SSD 磁盘 2021-2022 核心需求 可跨集群查询 长期存储 兼容 Prometheus 扩展性强 无侵入性 Why Thanos VS VS Gateway Store Gateway Redis 2022 年底面临的问题 ● 超 100+ 倍数据点增长导致查询缓慢 ● 架构复杂,参数调优困难 ● 频繁 OOM ● 集群规模受制于 Prometheus ● 集群成本上升 2023 压测结果 VS ● CPU 使用低 1.7 倍 ● RAM 使用减少 5 倍 ● 存储空间减少了 3 倍 25K+ 1Mil 60Mil+ 业务指标数量0 码力 | 42 页 | 2.32 MB | 1 年前3
Golang在接入层长连接服务中的实践-黄欣框架层:模块间通信协议(类似tcp/udp) • 业务层:bytes(类似应用层)留给业务自己定义就好了 架构—性能 • conn svr 架构—集群扩展 • Proxy本身无限扩容(无状态) • 依赖的存储可无限扩容(状态交给存储) – Redis集群:codis集群方案 – Mysql集群:中间件方案 架构—灾备 • 这里的灾备主要指的是依赖的存储降级方案,涉及到存储 的主要两个模块 – Auth svr:cache(redis)0 码力 | 31 页 | 1.67 MB | 1 年前3
04. GraphQL in Chaos Mesh 2.0 - 李晨曦GraphQL in Chaos Mesh 如何高效地控制集群中的 资源状态 李晨曦 GitHub: hexilee PingCAP R&D PingCAP 研发工程师,CNCF 开源项目 Chaos Mesh® 核心贡献者, 主要负责工程效率提升和 HTTP 故障注入功能的设计实现。并推动 GraphQL 在 Chaos Mesh 项目中的实践落地。 目录 1. Chaos Mesh chaos-mesh.org github.com/chaos-mesh Chaos Mesh 是什么 我们的目标 ● 建立一个完全闭环的云原生混沌工程平台 ● 让混沌工程变得更易用 问题与解决方案 集群中的状态 Chaos Mesh 本身的运行和注入的故障会 给各组件以及目标 Pod 带来各种状态。 cluster status Components Controller Daemon Dashboard Event Others Mounts Processes ipset iptables Pid Command Fds 集群中的状态 在实际混沌实验过程中,可能会出现注入的错误不符合预期,甚至完全没有效果的情况。能否高效 地获取各种状态则决定了故障诊断的效率。 集群状态大致可以分为两类,主要分类依据是能否通过 kubernetes API 直接查询。 k8s 可直接查询的状态 Kubernetes0 码力 | 30 页 | 1.29 MB | 1 年前3
共 35 条
- 1
- 2
- 3
- 4













