作者 | 易立

云原生现已成为数字经济技能的立异基石,而且正在深刻地改动企业上云和用云的办法。云原生的用云办法能够协助企业最大化取得云价值,也给企业的核算根底设施、运用架构、安排文明和研制流程带来新一轮变革。而事务和技能应战也催生了新一代云原生运维技能系统。

本文整理自阿里云资深技能专家、容器服务研制负责人易立在阿里云联合主办的“2021云上架构与运维峰会”中的讲演实录,分享了云原生年代运维技能发出的重要改动,以及源自阿里云超大规划云原生运用开展进程中的CloudOps实践。

云原生时代的运维体系进化

新商业带来新机遇与新应战

阿里云对云原生的界说是因云而生的软件、硬件和架构,协助企业最大化取得云价值。云原生技能带来的改变包含几个维度:

云原生时代的运维体系进化

• 首要是核算根底设施的改变,包含虚拟化、容器、函数核算的新的核算形态,协助运用高效地运转在公共云、私有云、边缘云等不同的云环境。 • 其次是运用架构的改变。运用微服务、服务网格等技能协助企业构建分布式、松耦合、高弹性、高容错的现代化运用。 • 终究是安排、文明和流程的改变。比方 DevOps、DevSecOps、FinOps、 SRE 等理念继续推动现代化的软件开发流程和安排晋级。

回忆云原生呈现的年代背景,移动互联网的呈现改动了商业的形态,改动了人与人交流的办法,让任何人在任何时刻、任何地址都能够轻松获取自己所需的服务。IT 系统需求能够应对互联网规划的快速增长,而且能够快速迭代、低成本试错。

以 Netflix、阿里为代表的一系列互联网公司推动了新一代运用架构的变革,Spring Cloud、Apache Dubbo 等微服务架构应运而生。微服务架构处理了传统单体式运用存在的几个问题:每个服务能够独立布置和交给,大大提高了事务灵敏性;每个服务能够独立横向扩容,应对互联网规划的应战。

与传统单体运用比较,分布式的微服务架构具有更快的迭代速度、更低的开发杂乱性和更好的可扩展性。但一同,它的布置和运维的杂乱性却大大添加。咱们需求怎么应对?

此外,“脉冲”核算成为常态。比方双十一大促期间,零点需求的算力是平常的数十倍;一个突发的新闻事件,可能让上千万用户涌向交际媒体。云核算无疑是处理突发流量洪峰的愈加经济、高效的办法。怎么上好云、用好云、管好云,怎么让运用能够愈加充分运用根底设施的弹性,成为企业运维团队的重视重点。这些事务和技能应战也催生了云原生的运维技能系统 – CloudOps。

云原生年代运维技能变革

1、云原生运维处理之道 CloudOps 要处理几个关键问题: • 规范化:规范化能够促进开发团队与运维团队的交流和协同,规范化也有助于生态分工,推动更多主动化东西的呈现。 • 主动化:只要主动化运维,才干支撑互联网规划的应战,才干继续支撑事务的快速迭代与稳定性。 • 数智化:数据化、AI 增强的主动化运维成为未来开展的必然趋势

2、容器 “运用集装箱”重塑软件供应链 在传统的运用分发、布置过程中,常会因为缺少规范导致东西碎片化,比方 Java 运用和 AI 运用的布置,需求彻底不同的技能栈,交给功率低。此外,为了防止运用之间的环境抵触,咱们常常需求将每个运用独自布置在一个独立的物理机或许虚拟机上,这也造成了许多资源浪费。

2013 年开源的容器技能 Docker 呈现,创始性地提出了依据容器镜像的运用分发和交给办法,重塑了软件开发、交给和运维的整个生命周期。

云原生时代的运维体系进化

就像传统的供应链系统为例,不管什么样的产品都是经过运用集装箱来进行运输,极大提高了物流功率,使得全球化的分工协同成为可能。

容器镜像将运用和其依靠的运用环境一同打包。镜像能够经过镜像库房进行分发,能够一致的办法运转在开发、测试和出产环境中。

容器技能是一种轻量化 OS 虚拟化才能,能够提高运用布置密度,优化资源运用率,与传统的虚拟化技能比较,愈加灵敏、轻量,具有更好的弹性和可移植性。

容器作为云年代的“运用集装箱”,重塑了整个软件供应链,也敞开了云原生技能浪潮。

3、容器技能加速不可变根底设施理念落地 在传统的软件布置和改变过程中,常常会呈现因为环境间的差异导致运用呈现不可用的问题。比方,新版别运用需求依靠 JDK11 的才能,而假如布置环境中没有更新 JDK 版别,就会导致运用失利。“It works on my machine”也成了开发人员玩笑的口头禅。而且跟着时刻的推移,系统的装备现已不可考,选用原地晋级的办法在改变的时分一不留神就会掉进坑里。

不可变根底设施(Immutable Infrastructure)是由 Chad Fowler 于 2013 年提出的一个理念,其中心思维是“任何根底设施实例一旦创立,就变成为只读状况,如需求修正和晋级,则运用新的实例进行替换。”

这种形式能够减少装备办理的杂乱性,确保系统装备改变能够可靠地、重复地履行。而且一旦布置犯错时可进行快速回滚。 Docker 和 Kubernetes 容器技能正是完成 Immutable Infrastructure 形式的最佳办法。当咱们为容器运用更新一个镜像版别的时分,Kubernetes 会新创立一个容器,而且经过负载均衡将新恳求路由到新容器,然后销毁老容器,这防止了令人头疼的装备漂移问题。

4、Kubernetes:分布式资源调度的规范及 CloudOps 最佳载体 现在,容器镜像现已成为了分布式运用交给的规范。Kubernetes 现已成为了分布式资源调度的规范。

越来越多的运用,经过容器办法进行办理、交给:从无状况的 Web 运用,有状况的数据库、音讯等运用,再到数据化、智能化运用。

云原生时代的运维体系进化

CNCF 2020 年调查报告指出,55%的受访者现已在出产中的容器中运转有状况运用;Gartner 预测到 2023 年,70%的 AI 任务会经过容器或 Serverless 形式构建。

云原生时代的运维体系进化

对比一下经典的 Linux 操作系统和 Kubernetes 的概念模型,他们的方针都是向下封装资源,向上支撑运用,供给了规范化的 API 来支撑运用生命周期,而且提高运用的可移植性。

不同的是,Linux 的核算调度单元是进程,调度规模限制在一台核算节点。而 Kubernetes 的调度单位是 Pod 一个进程组,它的调度规模是一个分布式集群,支撑运用在公共云、专有云等不同环境间进行搬迁。

对于运维团队而言,Kubernetes 成为完成 CloudOps 理念的最佳渠道。

首要是 K8s 选用声明式 API,让开发者能够专注于运用本身,而非系统履行细节。比方,在 Kubernetes 之上,供给了 Deployment、StatefulSet、Job 等不同类型运用负载的笼统。声明式 API 是云原生重要的规划理念,有助于将系统杂乱性下沉,交给根底设施进行完成和继续优化。

此外,K8s 供给了可扩展性架构,一切 K8s 组件都是依据一致的、敞开的 API 进行完成和交互。开发者也可经过 CRD(Custom Resource Definition)/ Operator 等办法供给范畴相关的扩展,极大拓宽了 K8s 的运用场景。

终究,K8s 供给渠道无关的技能笼统:如 CNI 网络插件, CSI 存储插件等等,能够对上层事务运用屏蔽根底设施差异。

5、为什么是 Kubernetes? Kubernetes 的成功背后的魔法便是操控循环,Kubernetes 有几个简略的概念。

云原生时代的运维体系进化

首要,一切都是资源,经过操控器对资源进行主动化办理。 用户能够声明资源的方针状况。当操控器发现资源当前状况与方针状况存在不一致,就会继续调整,让资源状况趋近于方针状况。经过这个办法,能够统一处理各种情况,比方,依据调整运用副本数进行扩缩容,或许节点宕机后运用主动搬迁,等等。

正因如此,Kubernetes 支撑资源规模现已远超容器运用。比方服务网格,能够对运用通讯流量进行声明式办理;Crossplane 能够运用 K8s CRD 对 ECS,OSS 等云资源进行办理和笼统。

6、云原生运用主动化办理探究与开源实践 K8s 操控器 “把杂乱留给自己,把简略交给用户”的理想十分美好,然而完成一个高效、健壮的操控器却充溢技能应战。

OpenKruise 是阿里云开源的云原生运用主动化办理引擎,也是捐献到 Cloud Native Computing Foundation (CNCF) 下的沙箱项目。它来自阿里巴巴多年来容器化、云原生的技能沉积,处理容器运用在大规划出产环境的主动化和稳定性应战。

云原生时代的运维体系进化

OpenKruise 供给了增强的运用灰度发布,稳定性防护,Sidecar 容器扩展等多种才能。

OpenKruise 开源完成和集团内部版别代码保持一致。支撑了阿里集团运用 100%云原生化,也现已在苏宁、OPPO、小米、Lyft 等企业得到广泛运用。欢迎咱们社区共建和运用反馈。

7、GitOps:声明式 API 催生的运用交给流程与协同新办法 根底架构即代码(Infrastructure-as-Code,IaC)是一种典型的声明式 API,它改动了云上资源办理、装备和协同的办法。运用 IaC 东西,咱们能够将云服务器、网络和数据库等不同云资源进行主动化的创立、组装和变配。

云原生时代的运维体系进化

将 IaC 概念进行延伸,能够掩盖整个云原生软件的交给、运维流程,即 Everything as Code。本图列出来云原生运用涉及的各种模型,从根底设施、到运用界说、到运用交给办理和安全系统,咱们都能够经过声明式办法对运用的装备进行办理。

比方,咱们能够经过 Istio 来对运用流量切换进行声明式处理,能够运用 OPA(Open Policy Agent)来界说运转时安全策略等等。

更近一步,咱们能够将运用的一切环境装备都经过源代码操控系统 Git 进行办理,并经过主动化的流程进行交给和改变。这样便是 GitOps 的中心理念。

云原生时代的运维体系进化

首要,从运用界说到根底设施环境,一切的装备都以源代码的办法保存在 Git 中;一切改变、批阅记载也记载在 Git 的前史状况中。这样 Git 成为 sourceof truth,咱们能够追溯改变前史、能够回滚到指定版别。

GitOps 与声明式 API、不可变根底设施相结合,保证了运用环境的可复现性,提高了交给与办理功率。GitOps 在阿里集团现已被广泛运用,在阿里云容器服务 ACK 中也有支撑。现在 GitOps 开源社区也在不断完善相关的东西和最佳实践,咱们能够重视相关发展。

8、云原生催生稳定性思维变革 分布式系统存在高度杂乱性,在运用、根底设施、布置过程中任何一个当地的问题,都可能导致事务系统的毛病。 面对这样的不确定性危险,咱们有两种做法:一种是“听天由命”,信佛祖,不宕机;一种是经过系统化的办法进行主动出击,提高系统确实定性。

2012 年,Netflix 提出了“混沌工程”的理念,经过主动注入毛病的办法,提前发现系统的薄弱环节,推动架构的改进,终究完成事务耐性。咱们能够将混沌工程的作业办法比作疫苗,经过“接种灭活疫苗”的办法,让咱们的免疫系统遭到锻炼,具有抵挡 “疾病” 的才能。

阿里双十一购物节的顺利成功,离不开全链路压测等对混沌工程的大规划实践,为此阿里团队在这个范畴堆集了丰厚的实战经验。

云原生时代的运维体系进化

ChaosBlade 是一组遵从混沌工程理念的试验东西,具有场景丰厚、简略易用等特点,现已成为 CNCF 沙箱项目。它支撑 Linux、Kubernetes、Docker 等不同运转环境,以及 Java、NodeJS、C++、Golang 等多种语言。内置了 200 多个场景的测试计划。

chaosblade-box 是新引进的混沌工程操控台,可完成试验环境渠道化办理,进一步简化用户体验,下降运用门槛。欢迎咱们加入 Chaosblade 社区共建,也能够运用阿里云运用高可用服务 AHAS 云服务。

云原生 CloudOps 之路

终究我将结合阿里实践,介绍咱们在 CloudOps 上的一些探究。

在传统安排中,开发和运维人物是严厉分开的。而不同事务线也构建了一个一个的烟囱化架构,从根底设施环境与运维,到运用运维与开发,都是独立的团队,缺少杰出的协同与复用。

云年代的到来也在改动着现代 IT 安排和流程。

云原生时代的运维体系进化

首要,公共云、专有云成为了不同事务部门间共享的根底设施。

然后,SRE (Site ReliabilityEngineering)理念开端得到广泛承受。是经过软件和主动化手段,来处理系统的运维杂乱性和稳定性问题。因为 Kubernetes 的规范化、可扩展性和可移植性等优势,越来越多企业的SRE团队依据 K8s 办理云环境,极大提高了企业运维功率与资源功率。

在此之上,渠道工程团队开端显现,依据 Kubernetes 构建企业的 PaaS 渠道和 CI/CD 流程,支撑中间件和不同事务部门的运用布置与运维。提高企业的规范化和主动化水平,进一步提高运用研制、交给功率。

这样的分层结构中,向下的团队更多是经过 SLO 驱动,从而让上层系统对底层依靠技能具有更好的可预期性。越向上的团队更多是事务驱动,更好地支撑事务开展。

1、阿里云容器服务 SRE 团队的最佳实践 阿里云容器服务 SRE 团队一向也在践行 CloudOps 的最佳实践,简略总结如下:

云原生时代的运维体系进化

第一项是全局稳定性架构规划,让整个渠道防范与未然: • 首要 Securityby-design:让系统做到默许安全,一同经过安全软件供应链保证全生命周期安全 • 其次 Designfor failure:操控爆炸半径、供给限流/降级手段下降毛病影响面 • 第三 Designfor automation:相似扩缩容、毛病恢复等作业尽可能主动化完成 • 终究 Observabilityby-design:为每个出产运用界说 SLO,并树立相关的可观测性系统,继续重视恳求量,推迟、过错数、饱和度等黄金指标

第二项是建造稳定性应急系统,也便是咱们日常所说的 1-5-10 快恢才能,它包含: • 1 分钟发现 – 包含经过黑盒、白盒监控才能 • 5 分钟定位 – 供给确诊大盘,运用东西完成主动化根因定位 • 10 分钟止损 – 包含系统化的预案的规划与继续堆集,和主动化预案履行

终究一项是日常稳定性保证,首要包含: • 改变办理规范化 – 一切发布做到可灰度、可监控、可回滚 • 问题盯梢流程化 – 凡事有告知,件件有着落,做一个靠谱青年 • 毛病演练常态化 – 经过巡检、突袭、压测等手段查漏补缺,让毛病预案继续保鲜

2、拥抱云原生运维技能系统 云原生现已成为势不可挡的技能趋势。Gartner 预测到 2025 年,95%数字化运维将经过云原生渠道进行支撑。

云原生时代的运维体系进化

咱们能够依据企业才能和事务方针选择合适的迁云之路,大致能够分为几个阶段:

• Rehost 新保管:简略地经过 lift-and-shift 办法,将线下物理机替换成为云上虚拟机或许裸金属实例,不改动原有的运维办法。 • Re-platform 新渠道:运用保管的云服务替换线下自建运用根底设施,比方经过 RDS 数据库服务替换自建 MySQL,经过阿里云容器服务 ACK 来取代自建 K8s 集群。保管的云服务通常供给更好的弹性、稳定性和自治运维才能,能够让用户重视于运用而非根底设施办理。 • Refactor/Re-architect 重构/新架构:包含对单体运用的微服务架构改造、容器化和 Serverless 化等现代化改造。

从 Rehost、Re-platform 到 Re-architect,咱们能够看到搬迁的杂乱性和所需技能在添加,但是灵敏性、弹性、可用性、容错性等收益也在继续添加。

阿里集团上云也经历了这样的进程,在2020年事务 100%上公共云的根底之上,2021年完成了运用 100%云原生化。协助阿里事务的研制功率提高了 20%,资源运用率提高了 30%。

云原生时代的运维体系进化

终究做一个快速总结。依据容器、Kubernetes 等云原生技能,供给的敞开社区规范、不可变根底设施、声明式 API 会成为企业 CloudOps 的最佳实践,也将在这个根底上推动数据化、智能化系统建造,将运维杂乱性进一步下沉,让企业能够聚焦于自己的事务立异。阿里云也将继续向外输出本身在超大规划云原生实践和探究中的才能沉积,与更多企业、开发者一同,躬身入局,全面拥抱云原生运维技能系统。