简介:随着容器技术的快速发展和普遍应用,毫无疑问云原生技术是将来发展的必然趋势。做为国内最先布局容器技术的阿里云,不管在技术仍是产品上,都取得了极大的成果。阿里云资深技术专家易立经过阿里云容器服务,分享容器技术落地的最佳实践,但愿可以帮助同窗们更好地理解容器技术和云原生理念,合理地设计上云架构,充分发挥云的价值。(文末推荐:2020 阿里巴巴研发效能峰会)前端
没有集装箱,就没有全球化。——《经济学人》
容器的英语是 Container,它的意思是集装箱。咱们知道,经济全球化的基础就是现代运输体系,而其核心正是集装箱。集装箱的出现实现了物流运输的标准化,自动化,大大下降了运输的成本,使得整合全球的供应链变为可能。这就是著名经济学人谈到的“没有集装箱,就没有全球化”。算法
集装箱背后的标准化、模块化的理念也在推动建筑业的供应链变革。在最近,疫情爆发以后。10 天 10 夜,在武汉火神山,一个能够容纳上千床位的专科医院平地而起,在抗疫过程当中发挥的重要做用。整个医院都是采用集装箱板房吊装。模块化的病房设计,预置了空调、消杀、上下水等设施,极大加速了施工速度。数据库
软件集装箱 ”容器技术“ 也在重塑整个软件供应链。容器做为一种轻量化的操做系统虚拟化技术,和和传统的物理机、虚拟化技术和使用方式有什么不一样呢?打个比喻:后端
传统物理机就是独栋大别墅安全
虚拟机就是联排住宅网络
容器就是集装箱板房架构
在过去几年中,容器技术获得了愈来愈普遍的应用。其中最主要的 3 个核心价值是:负载均衡
敏捷less
天下武功惟快不破。在企业数字化转型时代,每一个企业都在面临着新兴业务模式的冲击和众多的不肯定性。一个成功的企业不是看他如今规模有多大,过去的战略有多成功,而是要看他是否有能力持续创新。容器技术提高了企业的 IT 架构的敏捷性,从而提高了业务敏捷性,能够加速业务创新。好比疫情期间,教育、视频、公共健康等行业的在线化出现了爆发性高速增加。经过容器技术能够很好地把握业务快速增加的机遇。在业界的统计中,使用容器技术能够实现 3~10 倍交付效率提高,这意味着企业能够进行快速迭代,低成本试错。运维
弹性
在互联网时代,企业 IT 系统常常须要面对电商大促、突发事件等可预期和非预期的流量增加。经过容器技术能够充分发挥云计算的弹性,经过提高部署密度和弹性来下降计算成本。好比在线教育,面对疫情之下指数级增加的流量,能够经过容器技术来缓解扩容的压力,支持数十万教师在线教学,百万学生在线学习。
可移植性
容器技术推动了云计算的标准化进程。容器已经成为应用分发和交付的标准,能够将应用与底层运行环境解耦;Kubernetes 成为资源调度和编排的标准,屏蔽了底层架构的差别性,帮助应用平滑运行在不一样的基础设施上。CNCF 云原生计算基金会推出了Kubernetes一致性认证,进一步保障了不一样 K8s 实现的兼容性。采用容器技术来构建云时代的应用基础设施将变得愈来愈容易。
如今 Kubernetes 已经成为了云应用操做系统,愈来愈多应用运行在 Kubernetes 基础之上:从无状态的 Web 应用,到交易类应用(如数据库、消息中间件),再到数据化、智能化应用。阿里经济体也基于容器技术,实现了全面的云原生上云。
阿里云容器服务产品家族能够在公共云、边缘计算和专有云环境提供企业容器平台。阿里云容器产品的核心是 Kubernetes Service - ACK 和 Serverless K8s - ASK,它们构建在阿里云的一系列基础设施能力之上,包括计算、存储、网络、安全等,并提供标准化接口、优化的能力和简化的用户体验。ACK 经过 CNCF K8s 一致性兼容认证,并提供了一系列企业关注的核心能力,好比安全治理,端到端可观测性、多云混合云等。
镜像服务 ACR 是企业云原生应用资产管理的核心,能够管理 Docker 镜像,Helm Chart 等应用资产,并和 CI/CD 工具结合在一块儿提供完整的 DevSecOps 流程。
托管服务网格 ASM,提供全托管的微服务应用流量管理平台,兼容 Istio,支持多个 Kubernetes 集群中应用的统一流量管理,为容器和虚拟机中应用服务提供一致的通讯、安全和可观测能力。
咱们以托管 K8s 为例介绍集群部署拓扑结构。
ACK 托管 K8s 集群基于 Kubernetes on Kubernetes 架构设计。K8s 集群的 Master 组件,运行在 ACK VPC 中的控制平面 K8s Cluster 之上。
ACK 采用了默认高可用的架构设计:etcd 3 副本分别运行在 3 个不一样 AZ 之上。也根据可扩展性最佳实践,提供了两组 etcd。一组保存配置信息,一组保存系统事件,这样能够提高 etcd 的可用性和可扩展性。用户 K8s 集群的 API Server/Scheduler 等 master 组件,采用多副本方式部署,运行在 2 个不一样的 AZ 之上。master 组件能够根据工做负载进行弹性扩展,Worker 节点经过 SLB 来访问 API Server。这样的设计保证了整个 K8s 集群的可用性,即便一个 AZ 的失效,也不会致使 K8s 集群自身失败。
worker 节点,运行在 VPC 上。将节点运行在不一样的 AZ,配合应用的 AZ anti-affinity反亲和性能够保障应用的高可用。
弹性是云最核心的能力之一,像双十一这样的典型脉冲应用场景,或者像疫情爆发以后的在线教育和办公协同的极速增加,只能依靠云提供的强大弹性算力才能支撑。Kubernetes 能够将云的弹性能力发挥到极致。
ACK 在资源层和应用层提供了丰富的弹性策略,在资源层目前主流的方案是经过 cluster-autoscaler 进行节点的水平伸缩。当出现 Pod 因为资源不足形成没法调度时,cluster-autoscaler 会在节点池中自动建立新的节点实例,根据应用负载需求进行扩容。
ECI 弹性容器实例,基于轻量虚拟机提供了 Serverless 化的容器运行环境。咱们能够在 ACK 经过调度将业务应用运行在 ECI 实例上。这很是适合大数据离线任务、CI/CD 做业、突发的业务扩容等。在微博的应用场景中,弹性容器实例能够在 30 秒内扩容 500 Pod,轻松应对突发的新闻事件。
在应用层,Kubernetes 提供了 HPA 的方式进行 Pod 的水平伸缩,和 VPA 进行 Pod 的垂直伸缩。阿里云提供了 metrics-adapter,能够支持更加丰富的弹性指标,好比能够根据 Ingress 的 QPS 指标,动态调整应用 Pod 数量。另外不少应用负载的资源画像是具备周期性的。好比证券行业业务的高峰是工做日的股市开盘时间。峰谷资源需求量的差别高达 20 倍,为了解决这类需求,阿里云容器服务提供了定时伸缩组件,开发者能够定义定时扩缩容策略,提早扩容好资源,而在波谷到来后定时回收资源。能够很好地平衡系统的稳定性和资源成本。
K8s 提供的强大的功能和灵活性,可是运维一个 Kubernetes 生产集群极具挑战。即便利用托管 Kubernetes 服务,可是依然要保有 worker 节点资源池,还须要对节点进行平常维护,好比 OS 升级,安全补丁等,并根据本身的资源使用状况对资源层进行合理的容量规划。
针对 K8s 的复杂性挑战,阿里云推出了 Serverless Kubernetes 容器服务—— ASK。ASK 在兼容 K8s 应用的前提下,对 Kubernetes 作减法,将复杂性下沉到云基础设施,极大下降了运维管理负担,让开发者更加专一于应用自身。
在 Serverless 容器场景,咱们提供了两种不一样的技术方案:ACK on ECI 和 ASK。
ACK on ECI
ACK 集群兼具功能性和灵活性。很是适合大型互联网企业或传统企业的需求。能够一个集群中运行多种不一样的应用、任务。它主要面向的是企业中 SRE 团队,能够对 K8s 进行定制化开发和灵活性控制。
ACK 集群支持 3 种不一样的容器运行时技术:
ECI 在 K8s 集群中适合的场景:
ASK
ASK 则是针对 ISV 和企业中的部门/中小企业度身定制的容器产品。用户彻底不需具有 K8s 的管理运维能力,便可建立和部署 K8s 应用,极大下降管理复杂性,很是适合应用托管、CI/CD、AI/数据计算等场景。好比能够利用 ASK 和 GPU ECI 实例构建了免运维的 AI 平台,能够按需建立机器学习环境,总体架构很是简单、高效。
云原生分布式应用架构具有几个关键特性,高可用、可弹性伸缩、容错性好、易于管理、便于观察、标准化、可移植。咱们能够在阿里云上构建云原生应用参考架构,其中包括:
首先是端到端的弹性的应用架构。
咱们能够将前端应用、业务逻辑容器化,部署在 K8s 集群上,并根据应用负载配置 HPA 水平伸缩。
在后端数据层,咱们能够利用 PolarDB 这样的云原生数据库。PolarDB 采用存储和计算分离架构,支持水平扩展。同等规格下是 MySQL 性能的7倍,而且相较于 MySQL 可以节省一半成本。
此外是系统化的高可用设计:
这样咱们能够保障整个系统具有 AZ 级别的可用性,能够容忍一个 AZ 的失效。
此外,阿里云的高可用服务 AHAS,提供了架构感知的能力,能够对系统的拓扑结构进行可视化。并且它提供了应用巡检能力,帮助咱们定位可用性问题。好比应用副本数是否知足可用性需求,RDS 数据库实例是否开启了多可用区容灾等等。
在一个大规模分布式系统中,基础设施(如网络,计算节点、操做系统)或者应用自身都有可能会出现各类稳定性或者性能问题。可观测性能够帮助咱们解分布式系统的状态,便于作出决策,并做为弹性伸缩和自动化运维的基础。
通常而言,可观测性包含几个重要的层面:
Logging – 日志(事件流)
咱们基于阿里云日志服务 SLS 提供了完整的日志方案,不但能够对应用日志进行收集、处理,而且提供了操做审计,K8s 事件中心等能力。
Metrics – 监控指标
对基础设施服务,好比 ECS、存储,网络,云监控提供了全面的监控。对于业务应用的性能指标,好比 Java 应用的 Heap 内存利用状况,ARMS无需修改业务代码便可对 Java 和 PHP 应用提供全方位的性能监控。对于 K8s 应用和组件,ARMS 提供的托管 Prometheus 服务,提供多种开箱即用的预置监控大盘,也提供开放接口,便于三方集成。
Tracing – 全链路追踪
Tracing Analysis 为开发者提供了完整的分布式应用调用链路统计、拓扑分析等工具。可以帮助开发者快速发现和诊断分布式应用中的性能瓶颈,提高微服务应用的性能和稳定性。
安全是企业在应用容器技术中最大的顾虑,没有之一。为了系统化提高容器平台的安全性,咱们须要全方位进行安全防御。第一件事,咱们须要将 DevOps 提高成为 DevSecOps,强调需将安全概念融入在整个软件生命周期中,将安全防御能力左移到开发和交付阶段。
ACR 镜像服务企业版提供了完整的安全软件交付链。用户上传镜像后,ACR 能够自动化地进行镜像扫描,发现其中存在的 CVE 漏洞。以后能够利用 KMS 秘钥服务,自动化对镜像添加数字签名。在 ACK 中,能够配置自动化安全策略,好比只容许通过安全扫描且符合上线要求的镜像在生产环境进行发布。整个软件交付链路可观测、可追踪、策略驱动。在保障安全性的前提下,能够有效提高交付效率。
此外,在应用运行时,也会面对众多安全风险,好比新发现的 CVE 漏洞或者病毒攻击。阿里云安全中心提供了运行时的安全监控和防御能力。
云安全中心能够对容器应用进程与网络状况监控,对应用的异常行为或者安全漏洞进行实时检测。发现问题后,会经过邮件、短信对用户进行通知,也提供了自动化隔离与修复能力。好比咱们拿一个去年著名的挖矿蠕虫病毒为例,它会利用用户的配置错误对容器集群发动攻击。在云安全中心的帮助下,咱们能够轻松发现它的踪影并进行一键清除。
今年二月,咱们发布了业内首个全托管,Istio 兼容的服务网格产品 ASM。服务网格的控制平面组件托管在阿里云侧,与数据平面侧的用户集群独立。经过托管模式,极大简化了 Istio 服务网格部署和管理的复杂性,解耦了网格与其所管理的 K8s 集群的生命周期,使得架构更加简单、灵活,提高了系统的稳定性和可伸缩性。此外,ASM 在 Istio 基础上进行大量的扩展,整合了阿里云可观测性服务、日志服务等,能够帮助用户更加高效地管理网格中的应用。
在数据平面的支持上,ASM 产品能够支持多种不一样的计算环境,这包括了 ACK Kubernetes 集群、ASK 集群、以及 ECS 虚拟机等。经过云企业网 CEN,ASM 能够实现多地域、跨 VPC 的 K8s 集群之间的服务网格。这样 ASM 能够对多地域的大规模分布式应用实现流量管理和灰度发布。此外,ASM 也会很快推出多云混合云的支持。
上云已经是大势所趋,可是对于企业用户而言,有些业务因为数据主权和安全隐私的考虑,没法直接上云,只能采用混合云架构。Gartner 预测 81% 的企业将采用多云/混合云战略,混合云架构已经成为企业上云的新常态。
传统的混合云架构以云资源为中心进行抽象和管理。然而不一样云环境的基础设施、安全架构能力的差别会形成企业 IT 架构和运维体系的割裂,加大混合云实施的复杂性,提高运维成本。
在云原生时代,以 Kubernetes 为表明的技术屏蔽了基础设施的差别性,能够更好地在混合云环境下,进行统一资源调度和统一应用生命周期管理。以应用为中心的混合云 2.0 架构已经到来!
这里有几个典型场景:
基于 ACK 和阿里云的混合云网络、存储网关以及数据库复制等能力,咱们能够帮助企业构建全新的混合云 IT 架构。
混合云 2.0 架构
首先 ACK 提供了统一集群管理能力,除了能够管理阿里云 K8s 集群以外,还能够纳管用户在 IDC 的自有 K8s 集群和其余云的 K8s 集群。利用统一的控制平面实现多个集群的统一的安全治理、可观测性、应用管理、备份恢复等能力。好比利用日志服务、托管 Prometheus 服务,能够无侵入的方式帮助用户对线上、线下集群有一个统一的可观测性大盘。利用云安全中心,AHAS 能够帮助用户在混合云的总体架构中发现并解决安全和稳定性风险。
此外 ASM 提供统一的服务治理能力,结合 CEN、SAG 提供的多地域、混合云网络能力,能够实现服务就近访问,故障转移,灰度发布等功能,支持云容灾、异地多活等应用场景,提高业务连续性。
云原生混合云解决方案
一个案例:职优你是一个电子学习职业发展平台,为来自世界多个地区的用户提供服务。它的应用部署在阿里云的 4 个不一样地域上多个 Kubernetes 集群中。这些集群经过云企业网 CEN 将多个跨地域 VPC 网络打通,并经过一个 ASM 服务网格,对多个 K8s 集群中的微服务应用进行统一的流量管理。
服务路由策略由 ASM 控制平面统一管理,并下发到多个 K8s 集群。用户请求会通过 DNS 分流到最近地域的入口网关,以后经过服务网格的就近访问能力,优先访问本地域内的服务端点。若是本地域的服务不可用,能够将请求自动转移到其余地域实现流量切换。
云原生混合云管理
阿里云的混合云解决方案有几个重要特色:
咱们来谈一下对 Windows 容器的支持。在现今企业中,Windows 操做系统依然占据半壁江山,其市场份额达 60% 之多。企业还有有大量的 Windows 应用,好比 ERP,CRM,ASP.Net 网站等。利用 Windows 容器和 Kubernetes,可让 .Net 应用在代码不重写的状况下实现容器化交付,充分利用云上的弹性、敏捷等能力,实现业务应用的快速迭代和伸缩。
ACK 支持 Windows 2019,在 K8s 容器集群中:
1)为 Linux 和 Windows 应用提供了一致的用户体验和统一的能力。
2)支持 Linux 和 Windows 应用在集群中的混合部署和互连互通,好比咱们可让运行在 Linux 节点的 PHP 应用访问运行在 Windows 节点的 SQL Server 数据库。
咱们已经在支持了聚石塔电商平台和 supET 工业互联网平台支持了不少 ISV 来对 Windows 应用进行云原生化改造、升级。
下面咱们快速介绍一下阿里云在云原生方面的产品市场策略。咱们能够总结为三条:
新基石:容器技术是用户使用云资源的新界面,云原生技术是释放云价值的最短路径
新算力:基于云原生的软硬一体化技术创新,提高计算效率,加速业务智能化升级
新生态:经过开放技术生态和全球合做伙伴计划,帮助更多企业分享云时代技术红利
重磅推荐 | 2020 阿里巴巴研发效能峰会首次对外直播
6 月 12 日 - 13 日,阿里巴巴内部研发效能峰会首次对外直播!7 大论坛,35 个议题,1300 分钟技术干货分享!39 位技术大咖,4 万阿里工程师,邀你共享研发效能盛宴!
点击文末”阅读原文“当即预定直播!