随着科技的发展,云原生技术正成为数字化转型的重要一环。今天,让我们一起踏上云原生之路,探索容器技术以及实现云原生的最佳实践。容器技术的出现,使得应用的开发部署变得更加快捷、灵活,极大地提高了企业级应用的可扩展性和可移植性。它们也帮助企业节省成本,更快地创新,加速转型。此外,最佳实践是实现云原生的最佳方式,可以帮助企业节约时间和费用,更快地实现数字化转型。总之,容器技术和最佳实践可以帮助企业更快地融入云原生之路。

没有集装箱,就没有全球化。——《经济学人》

什么是容器?

容器的英语是 Container,它的意思是集装箱。我们知道,经济全球化的基础就是现代运输体系,而其核心正是集装箱。集装箱的出现实现了物流运输的标准化,自动化,大大降低了运输的成本,使得整合全球的供应链变为可能。这就是著名经济学人谈到的“没有集装箱,就没有全球化”。

集装箱背后的标准化、模块化的理念也在推进建筑业的供应链变革。在最近,疫情爆发之后。10 天 10 夜,在武汉火神山,一个可以容纳上千床位的专科医院平地而起,在抗疫过程中发挥的重要作用。整个医院都是采用集装箱板房吊装。模块化的病房设计,预置了空调、消杀、上下水等设施,极大加速了施工速度。

容器的通俗理解

软件集装箱 ”容器技术“ 也在重塑整个软件供应链。容器作为一种轻量化的操作系统虚拟化技术,和和传统的物理机、虚拟化技术和使用方式有什么不同呢?打个比喻:

传统物理机就是独栋大别墅

  • 一家人独占,住的舒适,不会被别人打扰。
  • 应用独占物理机,性能优异。但是缺点就是贵、交付时间长,资源利用率也不高。

虚拟机就是联排住宅

  • 每户有独立的空间,有较好的隔离性。每栋房屋之间共享水电、地基等基础设施。容积率提升了,成本下降了,交付速度也加快了。
  • 通过虚拟化技术,虚拟机中的应用可以实现安全隔离,还可以有效提升资源利用率。但是,虚拟机交付后还需进行应用配置和安装,交付速度还不够快。

容器就是集装箱板房

  • 集装箱房采用模块化设计,自带装修,可以快速搭建,随时移动。这是 2022 年卡塔尔世界杯一个体育场的设计。它将完全使用集装箱方式搭建一个可以容纳 4 万人的体育场。每个集装箱模块都在在中国生产,已经预置了看台,卫生间,酒吧等功能,在中国生产完毕后在卡塔尔组装。不但工期可以缩短 3 年,而且赛事结束后可以拆卸,搬迁到其他地方。
  • 容器利用操作系统中 cgroup,namespace 等技术实现资源隔离。容器共享操作系统内核,非常轻量,没有资源损耗,支持秒级启动,极大提升了系统的应用部署密度和弹性。容器镜像将应用和其依赖的系统组件和配置打包在一个标准化的、自包含的格式中。通过容器镜像方式进行应用分发和交付,可以让应用即开即用,并一致地运行在不同环境。

容器的价值

在过去几年中,容器技术得到了越来越广泛的应用。其中最主要的 3 个核心价值是:

敏捷

天下武功唯快不破。在企业数字化转型时代,每个企业都在面临着新兴业务模式的冲击和众多的不确定性。一个成功的企业不是看他现在规模有多大,过去的战略有多成功,而是要看他是否有能力持续创新。容器技术提升了企业的 IT 架构的敏捷性,从而提升了业务敏捷性,可以加速业务创新。比如疫情期间,教育、视频、公共健康等行业的在线化出现了爆发性高速增长。通过容器技术可以很好地把握业务快速增长的机遇。在业界的统计中,使用容器技术可以实现 3~10 倍交付效率提升,这意味着企业可以进行快速迭代,低成本试错。

弹性

在互联网时代,企业 IT 系统经常需要面对电商大促、突发事件等可预期和非预期的流量增长。通过容器技术可以充分发挥云计算的弹性,通过提升部署密度和弹性来降低计算成本。比如在线教育,面对疫情之下指数级增长的流量,可以通过容器技术来缓解扩容的压力,支持数十万教师在线教学,百万学生在线学习。

可移植性

容器技术推进了云计算的标准化进程。容器已经成为应用分发和交付的标准,可以将应用与底层运行环境解耦;Kubernetes 成为资源调度和编排的标准,屏蔽了底层架构的差异性,帮助应用平滑运行在不同的基础设施上。CNCF 云原生计算基金会推出了Kubernetes一致性认证,进一步保障了不同 K8s 实现的兼容性。采用容器技术来构建云时代的应用基础设施将变得越来越容易。

Kubernetes:云原生时代的基础设施

现在 Kubernetes 已经成为了云应用操作系统,越来越多应用运行在 Kubernetes 基础之上:从无状态的 Web 应用,到交易类应用(如数据库、消息中间件),再到数据化、智能化应用。

容器服务介绍

容器服务产品家族可以在公共云、边缘计算和专有云环境提供企业容器平台。容器产品的核心是 Kubernetes Service - ACK 和 Serverless K8s - ASK,它们构建在一系列基础设施能力之上,包括计算、存储、网络、安全等,并提供标准化接口、优化的能力和简化的用户体验。ACK 通过 CNCF K8s 一致性兼容认证,并提供了一系列企业关注的核心能力,比如安全治理,端到端可观测性、多云混合云等。

镜像服务 ACR 是企业云原生应用资产管理的核心,可以管理 Docker 镜像,Helm Chart 等应用资产,并和 CI/CD 工具结合在一起提供完整的 DevSecOps 流程。

托管服务网格 ASM,提供全托管的微服务应用流量管理平台,兼容 Istio,支持多个 Kubernetes 集群中应用的统一流量管理,为容器和虚拟机中应用服务提供一致的通信、安全和可观测能力。

托管 K8s 集群

我们以托管 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 的垂直伸缩。

Serverless Kubernetes

K8s 提供的强大的功能和灵活性,但是运维一个 Kubernetes 生产集群极具挑战。即使利用托管 Kubernetes 服务,但是依然要保有 worker 节点资源池,还需要对节点进行日常维护,比如 OS 升级,安全补丁等,并根据自己的资源使用情况对资源层进行合理的容量规划。

云原生弹性、高可用架构

云原生分布式应用架构具备几个关键特性,高可用、可弹性伸缩、容错性好、易于管理、便于观察、标准化、可移植

首先是端到端的弹性的应用架构。

我们可以将前端应用、业务逻辑容器化,部署在 K8s 集群上,并根据应用负载配置 HPA 水平伸缩。

在后端数据层,我们可以利用 PolarDB 这样的云原生数据库。PolarDB 采用存储和计算分离架构,支持水平扩展。同等规格下是 MySQL 性能的7倍,并且相较于 MySQL 能够节省一半成本。

此外是系统化的高可用设计:

  • 利用 AZ 级别的反亲和性,我们可以将应用的副本实例部署在不同 AZ。
  • 通过 SLB 负载均衡接入在不同 AZ 的应用入口。
  • PolarDB 数据库默认提供了跨 AZ 高可用。

这样我们可以保障整个系统具备 AZ 级别的可用性,可以容忍一个 AZ 的失效。

多维度可观测性

在一个大规模分布式系统中,基础设施(如网络,计算节点、操作系统)或者应用自身都有可能会出现各种稳定性或者性能问题。可观测性可以帮助我们解分布式系统的状态,便于做出决策,并作为弹性伸缩和自动化运维的基础。

一般而言,可观测性包含几个重要的层面:

Logging – 日志(事件流)

我们基于日志服务 SLS 提供了完整的日志方案,不但可以对应用日志进行收集、处理,并且提供了操作审计,K8s 事件中心等能力。

Metrics – 监控指标

对基础设施服务,比如 ECS、存储,网络,云监控提供了全面的监控。对于业务应用的性能指标,比如 Java 应用的 Heap 内存利用情况,ARMS无需修改业务代码即可对 Java 和 PHP 应用提供全方位的性能监控。对于 K8s 应用和组件,ARMS 提供的托管 Prometheus 服务,提供多种开箱即用的预置监控大盘,也提供开放接口,便于三方集成。

Tracing – 全链路追踪

Tracing Analysis 为开发者提供了完整的分布式应用调用链路统计、拓扑分析等工具。能够帮助开发者快速发现和诊断分布式应用中的性能瓶颈,提升微服务应用的性能和稳定性。

从 DevOps 到 DevSecOps

安全是企业在应用容器技术中最大的顾虑,没有之一。为了系统化提升容器平台的安全性,我们需要全方位进行安全防护。第一件事,我们需要将 DevOps 提升成为 DevSecOps,强调需将安全概念融入在整个软件生命周期中,将安全防护能力左移到开发和交付阶段。

ACR 镜像服务企业版提供了完整的安全软件交付链。用户上传镜像后,ACR 可以自动化地进行镜像扫描,发现其中存在的 CVE 漏洞。之后可以利用 KMS 秘钥服务,自动化对镜像添加数字签名。在 ACK 中,可以配置自动化安全策略,比如只允许经过安全扫描且符合上线要求的镜像在生产环境进行发布。整个软件交付链路可观测、可追踪、策略驱动。在保障安全性的前提下,可以有效提升交付效率。

此外,在应用运行时,也会面对众多安全风险,比如新发现的 CVE 漏洞或者病毒攻击。安全中心提供了运行时的安全监控和防护能力。

云安全中心可以对容器应用进程与网络情况监控,对应用的异常行为或者安全漏洞进行实时检测。发现问题后,会通过邮件、短信对用户进行通知,也提供了自动化隔离与修复能力。比如我们拿一个去年著名的挖矿蠕虫病毒为例,它会利用用户的配置错误对容器集群发动攻击。在云安全中心的帮助下,我们可以轻松发现它的踪迹并进行一键清除。

托管服务网格 ASM

混合云:企业上云新常态

上云已是大势所趋,但是对于企业用户而言,有些业务由于数据主权和安全隐私的考虑,无法直接上云,只能采用混合云架构。Gartner 预测 81% 的企业将采用多云/混合云战略,混合云架构已经成为企业上云的新常态。

传统的混合云架构以云资源为中心进行抽象和管理。然而不同云环境的基础设施、安全架构能力的差异会造成企业 IT 架构和运维体系的割裂,加大混合云实施的复杂性,提升运维成本。

在云原生时代,以 Kubernetes 为代表的技术屏蔽了基础设施的差异性,可以更好地在混合云环境下,进行统一资源调度和统一应用生命周期管理。以应用为中心的混合云 2.0 架构已经到来!

这里有几个典型场景:

  • 利用公共云的弹性算力应对突发流量。线下数据中心承载日常流量,当业务突增时,通过云资源扩容,承载突发流量。
  • 利用公共云构建低成本的云灾备中心。线上线下两套系统,线上系统作为热备。当线下数据中心发生故障时,可以快速将业务流量切换到云上。
  • 构建异地多活的应用架构。在云上多个地域部署单元化的业务系统,并提供统一的服务治理能力。当一个地域发生故障时,将业务流量迁移到其他地域提升业务连续性。

基于 ACK 的混合云网络、存储网关以及数据库复制等能力,我们可以帮助企业构建全新的混合云 IT 架构。

云容器服务的演进方向

下面我们快速介绍一下国内某大厂云原生方面的产品市场策略。我们可以总结为三条:

新基石:容器技术是用户使用云资源的新界面,云原生技术是释放云价值的最短路径

  • 支撑全球化应用交付:通过 ACR EE,可以实现一次提交、全球发布,发布效率提升 7 倍。
  • 实现 Serverless 化应用架构:利用 ASK/Knative,让开发者聚焦业务应用,无需管理基础设施。
  • 支持混合云、多云架构:帮助企业用户平滑上云,让工作负载在不同环境动态迁移。
  • 构建云-边-端一体的分布式云架构:将云的能力延伸到边缘和设备端,更好迎接 5G 和 AIoT 时代的创新机遇。优酷在应用边缘容器技术后,API 端到端网络延迟降低了 75%。

新算力:基于云原生的软硬一体化技术创新,提升计算效率,加速业务智能化升级

  • 容器和神龙架构相结合,性能优于物理机 20%。
  • 支持 GPU,NPU(含光芯片)等异构算力的调度和共享,可以实现利用率 2 ~ 4 倍提升。
  • 安全沙箱容器在强安全隔离的同时,实现原生进程90%性能。也推出了基于 Intel SGX 的机密计算的支持,可以为隐私和机密信息处理提供安全、可信的执行环境。

新生态:通过开放技术生态和全球合作伙伴计划,帮助更多企业分享云时代技术红利

  • 容器云应用市场:链接企业与云原生创新,已入驻 Fortinet、驻云、Intel 等多家合作伙伴,覆盖了从容器安全、监控到业务应用的不同商品,便于用户获得完整的容器化解决方案。
  • 全球合作伙伴生态:我们和 SAP,红帽,Rancher,Click2Cloud,BanzaiCloud等全球技术合作伙伴进行了产品能力集成。帮助企业用户在云上用好云原生技术。

云原生之路:趣谈容器技术从落地到最佳实践相关推荐

  1. 云原生之路:容器技术落地最佳实践

    简介: 随着容器技术的快速发展和广泛应用,毫无疑问云原生技术是未来发展的必然趋势.作为国内最早布局容器技术的阿里云,无论在技术还是产品上,都取得了极大的成果.阿里云资深技术专家易立通过阿里云容器服务, ...

  2. 从技术视角看考拉海购的云原生之路

    简介:今年双11,整个云原生升级帮助考拉减少了250台服务器,并沉淀出一套完整的 IaaS + PaaS 上云落地实践方案. 前言 考拉海购的整个云化改造是从 2019年10月份开始的,当时的唯一目标 ...

  3. 亲历者说 | 完整记录一年多考拉海购的云原生之路

    作者 | 张洪箫(花名:伏见)阿里巴巴新零售高级技术专家 来源|阿里巴巴云原生公众号 前言 考拉海购的整个云化改造是从 2019 年 10 月份开始的,当时的唯一目标就是短时间内快速完成迁移.在不到 ...

  4. Dubbo 云原生之路:ASF 毕业一周年、3.0 可期

    作者 | 刘军 **导读:**今年是 Dubbo 从 Apache 基金会毕业的一周年,同时也是推进 Dubbo 3.0,即全面拥抱云原生的重要一年.Dubbo 社区策划了[Dubbo 云原生之路]系 ...

  5. 云原生存储详解:容器存储与 K8s 存储卷

    作者 | 阚俊宝 阿里云技术专家 导读:云原生存储详解系列文章将从云原生存储服务的概念.特点.需求.原理.使用及案例等方面,和大家一起探讨云原生存储技术新的机遇与挑战.本文为该系列文章的第二篇,会对容 ...

  6. docker修改镜像的存储位置_云原生存储详解:容器存储与 K8s 存储卷(内含赠书福利)...

    作者 | 阚俊宝  阿里巴巴技术专家 参与文末留言互动,即有机会获得赠书福利! 导读:云原生存储详解系列文章将从云原生存储服务的概念.特点.需求.原理.使用及案例等方面,和大家一起探讨云原生存储技术新 ...

  7. 深度 | 面向云原生数据湖的元数据管理技术解析

    简介: 作者:沐远.明惠 背景 数据湖当前在国内外是比较热的方案,MarketsandMarkets市场调研显示预计数据湖市场规模在2024年会从2019年的79亿美金增长到201亿美金.一些企业已经 ...

  8. 云原生存储详解:容器存储与K8s存储卷

    作者 | 阚俊宝 阿里云技术专家 导读:云原生存储详解系列文章将从云原生存储服务的概念.特点.需求.原理.使用及案例等方面,和大家一起探讨云原生存储技术新的机遇与挑战.本文为该系列文章的第二篇,会对容 ...

  9. 坚持探索与落地并重,阿里巴巴云原生之路全景揭秘

    阿里妹导读:阿里云已经成功地规模化落地云原生,26日的 KubeCon 大会上,CNCF TOC 和阿里云资深技术专家李响发表主题演讲,分享了阿里巴巴在规模扩展.可靠性.开发效率.迁移策略等方面的经验 ...

最新文章

  1. boost::system::generic_category相关的测试程序
  2. crc32库 qt_Qt 打包32位库(包括WebEngineView)
  3. luci L大_油耗最低1.4L!开这四款车一个月都不用进加油站
  4. 邮件服务器在企业网中的应用
  5. 流程平台:子表控件(二) - 属性、事件、方法
  6. android显示矩阵大小,关于android:显示代表灰度图像的双值矩阵
  7. 在张学友演唱会的6万观众中,AI锁定了一名逃犯
  8. JavaWeb调用python脚本(可传参)
  9. 设计模式(八)组合模式 Composite
  10. 运算放大器基本公式_跨阻放大器稳定性
  11. HTML5变化 (一)
  12. DO / DTO / BO / VO / AO
  13. matlab卷积动画实现
  14. IDEA 插件开发 中文乱码
  15. RedHat配置阿里yum源
  16. 微信授权登录实现分析
  17. 【转载】排列组合公式原理
  18. uniapp 无法获取动态dom节点,解决方案
  19. 弘辽科技:拒做“淘宝客”,可小红书的电商梦何以撑未来?
  20. php面试题5---php面试题系列

热门文章

  1. Java中的public static final来修饰数组与接口变量
  2. 9个很酷的CMD命令
  3. FPGA并行加法树设计
  4. 2、初始化蓝牙适配器(wx.openBluetoothAdapter)
  5. kotlin协程硬核解读(5. Java异常本质协程异常传播取消和异常处理机制)
  6. 用C语言读取文件数据
  7. tar和gzip压缩和解压
  8. mysql 导出整个库表结构图_mysql导出数据库数据及表结构
  9. Dynamic-IPSec
  10. 实战▍Python爬取3w条游戏评分数据,看看哪款最热门?