「本文整理自阿里云高级开发工程师郝树伟(流生)在大会上的演讲,获取云原生专场所有 PPT 合集请在阿里巴巴云原生公众号后台回复“724”」git
7 月 24 日,阿里云开发者大会正式在上海世博中心召开,大会聚焦 IT 基础设施云化、云数据库、开源大数据、物联网以及云原生等主题,向数千位开发者分享了云上开发的技术干货。github
云原生的时代已经到来,云原生技术正在重塑整个软件生命周期,阿里巴巴是国内最先布局云原生技术的公司之一。数据库
容器服务团队在过去的几年时间内帮助不少用户成功把业务云原生化并迁移上云,其中有如今已是咱们 TOP10 的大客户,也有须要在国内开展业务的海外用户,有些是从其余云厂商迁移过来的用户,有些是从 IDC 里迁移上云的用户,并且愈来愈多的用户开始咨询如何对本身的应用作云原生化改造、如何把业务平滑地迁移到云上。安全
每一个用户的业务场景都是不一样的,有些差别化的业务场景对容器平台也有一些定制化的需求,咱们在帮助这些用户落实迁云方案的同时也在不断思考如何把这些案例中共性的东西作一些沉淀,总结出一些优秀的解决方案、最佳实践以及开发一些工具来帮助用户快速完成迁云的这件事情。这些解决方案、最佳实践以及迁云工具就是今天这篇文章想要分享的内容。服务器
在帮助用户落实迁云方案以前,咱们首先必需要回答至少 3 个问题:网络
在咱们过去帮助用户业务上云的案例中,绝大部分是自建 Kubernetes 集群迁移到 ACK 集群,与自建 Kubernetes 集群相比较,ACK 在成本、弹性、IaaS 高度融合、性能、安全加固以及实践经验等方面都有很是巨大的优点。架构
另外,ACK 与阿里云的全部 region 保持一致,除了国内多个区域开服外,在东南亚、中东、欧洲、美东美西都有开服,彻底能够知足用户开展全球业务的需求。运维
用户业务总体迁云的方案设计会涉及到集群规划、数据搬迁、监控切换、日志切换以及最终的生产流量切换或并网操做。ide
迁云到 ACK 须要涉及到哪些组件、搬迁哪些数据、切换哪些服务等,都是须要用户有清晰的概念的。工具
以上各个组件调试完毕后,咱们就能够进行一部分生产流量的切换。从集群规划到生产流量切换即是用户业务迁移上云所须要涉及到的方方面面。
咱们提供了一个企业容器化生命周期模型,这个模型是根据时间阶段和用户侧各个业务角色来划分的:
好比业务架构师角色须要关心的是业务上云能给公司带来什么价值,在 TCO 和场景上会带来哪些优化,云平台在安全性以及计算、存储、网络能力上是否能知足当前业务需求;IT 架构师负责规划当前业务须要的集群容量和规模以及网络选型等问题,剩下的就是系统管理员与应用管理员把迁云方案的各个细节落实下来。
这个模型的主要核心关注点是让用户的业务上云后能更稳定、成本更低、效率更高。
全栈迁云架构思路分两种:一种是总体迁移,一种是平滑迁移。
总体迁移是指用户应用所有迁移上云后,各个组件调试完毕、测试验收经过后,能够总体切换生产流量到线上集群,待线上集群上的业务稳定运行一段时间后再下线原有环境。
平滑迁移是指用户可使用线上 ACK 集群纳管线下节点,或者线上集群与线下集群混合组网对外提供服务,逐步改造业务组件上云后将原有环境下线。
这两种方式相比,总体迁移更简单,平滑迁移响度复杂但对业务影响小,因此也须要根据用户的实际场景作选择。
容器化总体迁云这部分还有两个小场景:
一个是用户从自建 Kubernetes 集群迁移到 ACK,此场景下用户的应用已经作了很大一部分的云原生化改造,迁移工做相对来讲会简单些;
还有一部分用户的应用是传统应用,直接运行在虚拟机或者裸金属服务器上,没有作过任何云原生化的改造,对于这部分场景,咱们也提供了相关工具或方案帮助用户进行云原生化的迁云改造,好比使用 derrick 项目能够自动检测源码项目类型并生成 Dockerfile 和用于应用部署编排的 yaml 文件,好比咱们正在联合 ECS SMC(迁云中心)开发的虚拟机转换容器镜像并运行在 ACk 集群中的能力。
为了帮助用户提升迁云的效率,咱们也在持续积累和开源一些迁云工具。
好比 ack-image-builder 为用户提供建立 ACK 集群节点自定义镜像的模板并经过校验模块检查自定义镜像是否知足 ACK 集群要求;sync-repo 可以帮助用户快速完成容器镜像批量迁移至 ACR(容器镜像仓库服务); velero 可以帮助用户快速把其余云厂商后者自建 Kubernetes 集群下的完整应用迁移至 ACK 集群。
[Velero迁移Kubernetes应用到ACK视频DEMO](http://cloud.video.taobao.com/play/u/3300558962/p/1/e/6/t/1/232004050150.mp4)
在数据搬迁部分,可靠迁移是关键,根据用户数据类型的不一样,咱们会使用与之匹配的企业级迁移工具,好比数据在线迁移服务 DOMS,好比 OSS 的迁移工具,还有离线海量数据迁移方案闪电立方等。
数据、应用迁云完成后,须要进一步适配监控、日志等组件,待各个组件调试完毕经过验收后,可使用智能 DNS 进行生产流量的切割。
对于应用改造和优化这部分,K8s 到 K8s 的场景下,须要优化的是去适配自动扩容等自建 K8s 不具有的那些能力,在传统应用迁移到 ACK 的场景下,这部分的工做量会更大些,因此咱们针对这个场景也输出了一些方案,好比相似于异地多活的方案,咱们把用户传统应用环境,一般是虚拟机或者裸机环境集成到线上 ACK 部署的 Istio 网格中,逐步改造应用直至业务所有切换到线上 ACK 集群。
在应用逐步改造的这个过程当中,会涉及到应用如何容器化、网络环境如何迁移以及数据迁移的问题。
应用容器化这个问题,咱们可使用前面我提到过的一个服务叫作 SMC 迁云中心来完成虚拟机转换为容器镜像的过程,网络这部分能够经过 iptables, External, CoreDNS PrivateZone 等方式对 IP 地址 DNS 域名作处理,保持原先的逻辑 IP 和域名不变,并经过 Istio 实现网络虚拟路由和可观测性的管理。
典型案例以下图所示:
接下来是部分迁云案例:
在云原生场景实战分论坛上,阿里云容器服务 ACK 正式发布云原生化迁云解决方案、混合云 2.0 管理能力。
云原生化迁云解决方案旨在实现容器化总体迁云。方案能帮助用户快速完成迁云方案评估、迁云实施和生产流量切换,全面提高用户业务的可靠性、安全性、灵活性并下降开发运维成本,为用户提供全方位保障,让用户聚焦业务创新。
ACK 混合管理能力 2.0 提供了多维度统一能力,进一步减小开发者工做量:
不久前,阿里云发布了 Edge@ACK 云边端一体化的云原生边缘容器产品。在这次大会上,阿里技术专家详细阐述了边缘容器如何在阿里云 CDN 落地。CDN 正在进行二次变革,从之内容分发服务为主转变为边缘计算,其节点通过改造后也可升级为具有存储、计算、传输、安全功能云计算节点,造成处理高频、高交互的海量数据的能力。
阿里云 ENS 就是基于 CDN 的边缘节点服务,在阿里云看来:“云原生”在云边端一体化时代将会发挥更大的价值。