深入 Kubernetes 的无人区-蚂蚁金服双十一的调度系统深入 Kubernetes 的“无人区” —— 蚂蚁金服双十一的调度系统 曹寅2/19 一、蚂蚁金服的Kubernetes现状 二、双十一Kubernetes实践 三、展望未来迎接挑战 目 录 contents 目录3/19 一、蚂蚁金服的Kubernetes现状 Part 1:4/19 发展历程与落地规模 Part 1:蚂蚁金服的Kubernetes现状 平台研发 灰度验证 单集群规模 90%+ 应用服务 数十万 应用 Pods业务 6/19 统一资源调度架构 Part 1:蚂蚁金服的Kubernetes现状 非云 资源 云化 资源 基础 服务 蚂蚁 k8s 核心 CRI Kubernetes API Server 极速交付 分时复用 弹性容量 资源画像 规模化调度 高可用容灾 可视化 服务 Cluster Control Panel 在线应用 资源分时调度 Part 2:双十一 Kubernetes 实践 快速腾挪的问题 1.实例上下线需要预热 2. 腾挪耗时不可控 3. 大规模腾挪的稳定性技术风险 9/19 资源分时链路切换 Part 2:资源分时调度 Kubernetes Node 分时调度 Agent Pod 资源 Node 分时调度 Agent Pod 资源 Node 分时调度 Agent0 码力 | 19 页 | 2.18 MB | 6 月前3
TiDB v8.2 中文手册· · · · · · · 887 9.6 TiDB 集群报警规则· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 888 9.6.1 TiDB 报警规则 · · · · · · · · · · · · · · · · · · · · · · · 888 9.6.2 PD 报警规则 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 891 9.6.3 TiKV 报警规则 · · · · · · · · · · · · · · · · · · · · 896 9.6.4 TiFlash 报警规则· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 904 9.6.5 TiDB Binlog 报警规则 · · · · · · · · · · · · · · ·0 码力 | 4987 页 | 102.91 MB | 10 月前3
TiDB v8.5 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 773 7.4.3 TiCDC 集群监控报警规则 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 778 · · · · · · 1207 9.6 TiDB 集群报警规则· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1208 9.6.1 TiDB 报警规则 · · · · · · · · · · · · · · · · · · · · · · · 1208 9.6.2 PD 报警规则 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1211 9.6.3 TiKV 报警规则 · · · · · · · · · · · · · · ·0 码力 | 5095 页 | 104.54 MB | 10 月前3
TiDB v8.4 中文手册· · · · · · · 953 9.6 TiDB 集群报警规则· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 954 9.6.1 TiDB 报警规则 · · · · · · · · · · · · · · · · · · · · · · · 954 9.6.2 PD 报警规则 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 957 9.6.3 TiKV 报警规则 · · · · · · · · · · · · · · · · · · · · · · 962 9.6.4 TiFlash 报警规则· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 969 9.6.5 TiCDC 报警规则 · · · · · · · · · · · · · · · · ·0 码力 | 5072 页 | 104.05 MB | 10 月前3
TiDB中文技术文档库分库分表等 Sharding 方案。同时它也 让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大的提升研发的生产力。 三篇文章了解 TiDB 技术内幕: 说存储 说计算 谈调度 TiDB 简介 TiDB 整体架构 README - 11 - 本文档使用 书栈(BookStack.CN) 构建 要深入了解 TiDB 的水平扩展和高可用特点,首先需要了解 TiDB 的整体架构。 F5)对外提供统一的接入地址。 Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个: 一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁 移等);三是分配全局唯一且递增的事务 ID。 PD 是一个集群,需要部署奇数个节点,一般线上推荐至少部署 3 个节点。 TiKV Server 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之 间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。 TiDB Server PD Server TiKV Server 核心特性 水平扩展 README - 12 - 本文档使用 书栈(BookStack.CN) 构建 无限水平扩展是0 码力 | 444 页 | 4.89 MB | 6 月前3
36-云原生监控体系建设-秦晓辉间隔 Kubernetes Node – kube-proxy 监控 • kube-proxy 在 /metrics 暴露监控数据, 可以直接拉取 • kube-proxy 的核心职责是同步网络规则, 修改 iptables 或者 ipvs。所以要重点关 注 sync_proxy_rules 相关的指标 • Categraf 的仓库中 inputs/kubernetes/kube-proxy- • rest_client_requests_total 针对 apiserver 的请求量的指标 • kubeproxy_sync_proxy_rules_duration_seconds 同步网络规则的延迟指标 以及通用的进程相关的指标,进程的 CPU 内存 文件句柄等指标 Kubernetes 控制面组 件的监控 Kubernetes控制面 apiserver的监控 • apiserver Kubernetes控制面 scheduler的监控 • scheduler 通过 /metrics 接口暴露监控数据,直接拉取即 可 • scheduler 在 Kubernetes 架构中,是负责调度对象到合 适的node上,会有一系列的规则计算和筛选。重点关注调 度这个动作的相关指标 • 采集方式可以参考 categraf 仓库的 k8s/deployment.yaml,大盘可以参考 k8s/scheduler- dash0 码力 | 32 页 | 3.27 MB | 6 月前3
CurveFS Copyset与FS对应关系造成巨大的锁开销,这个是不能接受的。 curve块设备的元数据管理,在分配数据的时候,offset一开始就是知道的,这是和curvefs分配很大的一个不同点。 假设已经确定了一个分片规则,那么根据这个分片规则,一定可以找到两个函数 inodeid到copyset的映射:copysetid = getPartition(inodeid) copyset管理的inode的范围:inoderange t)© XXX Page 8 of 19 3.1 如何获取inodeid 在create inode的时候,并不知道inode id,inode id是在创建完成之后返回的,这就没有办法利用分片规则去确定到底应该由哪个copyset去服务这个inode。 。 有两种思路 思路一:client在创建inode的时候,先去mds去获取一个inodeid,然后根据这个inode id找到服务这个i 。metaserver需要定期通过心跳向mds上报自己的状态。mds一方面根据metaserver上报的状态,进行相应的调度;另一方面根据心跳确认metasever 的存活状态。 这块内容参考的curve。metaserver定时向mds上报心跳,心跳内容参考curve。调度上,如果采用类似chubaofs的方案,那么copyset就会一直处于一个不均衡的状态中。如果copyset是可readwrite状态,新创建的0 码力 | 19 页 | 383.29 KB | 6 月前3
跟我学Shiro - 张开涛实现。 SecurityManager 接口继承了 Authenticator,另外还有一个 ModularRealmAuthenticator 实现, 其委托给多个 Realm 进行验证,验证规则通过 AuthenticationStrategy 接口指定,默认提供 的实现: FirstSuccessfulStrategy:只要有一个 Realm 验证成功即可,只返回第一个 Realm 身份验证 zhang=123,role1,role2 wang=123,role1 跟我学 Shiro——http://jinnianshilongnian.iteye.com/ 22 规则即:“用户名=密码,角色 1,角色 2”,如果需要在应用中判断用户是否有相应角色, 就需要在相应的 Realm 中返回角色信息,也就是说 Shiro 不负责维护用户-角色信息,需要 应用提供,Shiro checkRoles("role1", "role3"); } 跟我学 Shiro——http://jinnianshilongnian.iteye.com/ 23 规则:“用户名=密码,角色 1,角色 2” “角色=权限 1,权限 2”,即首先根据用户名找 到角色,然后根据角色再找到权限;即角色是权限集合;Shiro 同样不进行权限的维护,需 要我们通过 Realm0 码力 | 219 页 | 4.16 MB | 11 月前3
Nacos架构&原理
通常用于划分系统的配 置集。⼀个系统或者应用可以包含多个配置集,每个配置集都可以被⼀个有意义的名称标识。Data ID 尽量保障全局唯⼀,可以参考 Nacos Spring Cloud 中的命名规则: Nacos 架构 < 24 ${prefix}-${spring.profiles.active}-${file-extension} 配置快照(Configuration Snapshot) 将集群视角的连接数重新洗牌分配,趋向另外⼀种稳态 客户端随机+服务端柔性调整 核心的策略是客户端+服务端双向调节策略,客户端随机选择+服务端运行时柔性调整。 客户端随机 客户端在启动时获取服务列表,按照随机规则进行节点选择,逻辑比较简单,整体能够保持随机。 服务端柔性调整 (当前实现版本)人工管控方案:集群视角的系统负载控制台,提供连接数,负载等视图(扩展新增 连接数,负载,CPU 等信息,集群间 多个实例时,我们需要对不 健康的实例进行过滤或者针对实例的⼀些特征进行流量的分配,那么就需要在实例上存储⼀些例如 健康状态、权重等属性。随着服务规模的扩大,渐渐的又需要在整个服务级别设定⼀些权限规则、 以及对所有实例都生效的⼀些开关,于是在服务级别又会设立⼀些属性。再往后,我们又发现单个 服务的实例又会有划分为多个子集的需求,例如⼀个服务是多机房部署的,那么可能需要对每个机 房的实例做不0 码力 | 326 页 | 12.83 MB | 10 月前3
22-云原生的缘起、云原生底座、PaaS 以及 Service Mesh 等之道-高磊• 落地的核心问题:业务微服务的划分和设计(DDD,咨询方案等)、部署困难、维持运行困难、云资源 管理与应用管理视角分离导致复杂性等 • 传统方案:仅仅考虑了一部分变化而引起的不稳定,如通过基于人工规则的服务治理保护链路、如时 延体验较差的部署策略等 • 云原生是告诉我们:能够适应业务变化的微服务+能够适应制品变化的DevOPS+能够适应技术环境变 化的技术底座=云原生平台;其中变化是以研发循环形式不断出现和累加的,如果不进行治理,那 2010年WSO2提出 类云原生的概念 云原生应用相比传统应用的优势 低成本 高敏捷 高弹性 云原生应用 传统应用 部署可预测性 可预测性 不可预测 抽象性 操作系统抽象 依赖操作系统 弹性能力 弹性调度 资源冗余多 缺乏扩展能力 开发运维模式 DevOps 瀑布式开发 部门孤立 服务架构 微服务解耦架构 单体耦合架构 恢复能力 自动化运维 快速恢复 手工运维 恢复缓慢 云原生应用相比传统应用的优势(例子) 管好云 数 采 数 算 数 用 云原生赋能平台 标准化能力-分布式操作系统核心-容器服务 向上提供抽象化自愈IT运营视角 高效稳定应用资源供给 价值主张 架构 云原生底座=控制器+调度器的组合+Docker=根据环境的变化而动+基于封装 一致性的大规模分发 服务编排基本原理: • 以度量为基础,以NodeSelector算法来 决定在哪儿部署容器服务 • 运行时以期望与实际的差别进行动态调0 码力 | 42 页 | 11.17 MB | 6 月前3
共 125 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13













