《leveraging-multi-cluster-architecture-for-resilient-and-elastic-hybrid-cloud-at-xiaohongshu-feng-xiong-mao-hongcai-ren-huawei.pdf》由会员分享,可在线阅读,更多相关《leveraging-multi-cluster-architecture-for-resilient-and-elastic-hybrid-cloud-at-xiaohongshu-feng-xiong-mao-hongcai-ren-huawei.pdf(16页珍藏版)》请在三个皮匠报告上搜索。
1、多集群助力小红书打造面向混合云的高可用弹性架构熊峰Agenda为什么引入多集群&选型思考应用如何分发与迁移Kubernetes API 兼容多集群场景下弹性能力建设控制面自动化运维规划与展望解决什么问题规模限制管理难度资源效率混合云-多云战略单集群约5000节点的规模上限集群数量众多,持续快速增长无法满足互联网超大规模应用对业务发布与运维管理带来挑战业务与集群深度绑定,资源分配效率低下资源走查感知容量,自动化程度不高资源腾挪、甚至人工调度面向应用提供统一的平台入口资源碎片多,跨集群资源碎片难以利用提升应用跨集群分发与调度能力高效管理多云环境下的基础设施选型思考不要求切换工作负载有良好的抽象与扩
2、展机制大部分能力开箱即用社区活跃,用户众多整体架构业务层:不同业务板块的 PaaS 平台,通过K8S API实现业务应用的发布与管控运维多集群管控:多集群apiserver 作为统一的 api 入口,将不同类型的请求转发到不同链路。联邦层:联邦control-plane单集群:成员集群,最重承载应用的 Pod 实体如何实现资源分发PaaS 交互原则:像使用单集群一样使用多集群,不感知物理集群拓扑不需要配置多集群资源分发策略和差异化策略、下发基础 K8S 资源资源下发三个主要过程:ResourceDetector:聚合不同类型的分发策略,最终生成ResourceBinding对象;Binding
3、Controller:解析placement rule和resource object,为每个member cluster生成一个work对象;ExecutionController:将work对象中包含的资源信息渲染成k8s resource,下发到member k8s cluster中;状态聚合同样经历三个过程:单集群k8s resource status-work status多个work status-聚合到一个resourcebinding statusresourcebinding status-多集群k8s resource status数据同步原则:spec自上而下,statu
4、s自下而上;数据更新原则:借助3-way-merge-patch,与联邦有冲突以联邦为准,没有冲突的配置保留(以单集群为准)。RollingUpdate失效联合社区引入 Rollout-InterpreterMaxUnavailable 被放大存量应用迁移原地纳管:纳管过程 Pod、Workload 不重建、不重启双入口并存:优先联邦入口,紧急情况回退单集群入口。纳管Cluster-1 工作负载更灵活的多集群调度多集群的多层调度结构:机房间调度:基于成本、弹性实现机房间调度 迁移辅助集群间调度:调度到已经分发 workload 的集群,避免过于分散 基于节点规模的调度,有效管控集群节点规模 优
5、先基于集群可用资源,Pending 尽量集中在一个集群,便于节点伸缩模拟调度:集群调度层面结合单集群模拟调度与资源预留能力 全局资源账本 更有效的资源利用Kubernetes API兼容背景:1.Pod、Event等单集群资源无法通过Karmada 管控面直接获取;2.公司内部多个PaaS平台直接使用client-go和k8s交互,期望多集群方案能够兼容单集群的使用模式,降低接入门槛,同时提供贴近单集群的使用体验,屏蔽多集群架构:1.基于 k8s.io/apiserver 库构建兼容 K8S API的 7 层网关multicluster-apiserver 和缓存多集群 Pod、Event资源
6、的多集群缓存组件 cluster-gateway2.PaaS 平台通过client-go直接和 multicluster-apiserver进行交互,对联邦化资源的请求会转发到 karmada-apiserver,对Pod、Event资源的请求被转发到 cluster-gatewayKubernetes API 兼容1.基于 k8s.io/apiserver 构建的网关服务multicluster-apiserver提供兼容k8s api的服务,复用了k8s.io/apiserver 中的 handler 处理链,