4 月 14 日,「DaoCloud 道客」解决方案架构师 - 王钟汉,做客「凡泰讲堂」,分享《云原生技术发展前瞻》,与众多开发者一起回顾云原生的演进历程,探讨了新一代 CNI--Cilium 和服务网格等时下热门技术,并分享了Merbridge、Clusterpedia、HwameiStor,这些冉冉升起的开源项目。

下面将一一展开详细介绍,让我们一起洞见云原生技术,共赏 Kubernetes 技术的魅力!

01

「云」的
变迁与演进

首先,跟着上图几个重大事件的出现脉络,简单回顾一下,「云」是如何一步一步演化到「云原生」的。

虚拟化技术最早出现在大型机时代。直到 2001 年,VMware 发布了第一个针对 X86 服务器的虚拟化产品。之后几年,随着虚拟化技术的成熟,云计算市场逐渐形成,出现大批基于虚拟技术的云计算产品。

2006 年,AWS 推出首批云产品 Simple Storage Service (S3) 和 Elastic Compute Cloud (EC2),基于 AWS 的基础设施,企业可以构建自己的应用程序,是 IaaS 产品的代表。

2009 年,Heroku 推出第一款公有云 PaaS (Platform-as-a-Service),实现以更低的复杂度进行更高级的编程。基于 AWS,国内用得比较少。

2010 年 7 月,Rackspace Hosting 和 NASA 联合推出了一项名为 OpenStack 的开源云软件计划。OpenStack 是第一个开源的云平台,标志着云计算进入开源时代。

2011 年,Pivotal 推出了开源版 PaaS Cloud Foundry,作为 Heroku PaaS 的开源替代品。至此,PaaS 也加入了开源的行列。

2013 年,Docker 的发布掀起了一场影响深广的云计算技术变革,Docker 风靡一时,Container 逐步替代 VM,云计算进入容器时代。

2014 年10月,Google 开源 Kubernetes,并于 2015 年捐赠给 CNCF。

2017 年底,Mesos、Swarm、Kubernetes 的史诗大战,最终以 Kubernetes 全面胜利而告终,云计算进入 Kubernetes 时代。

2018 年 3 月,Kubernetes 从 CNCF 毕业,成为 CNCF 第一个毕业项目。[1]

Kubernetes 作为事实上的容器编排标准,屏蔽底层架构差异性,帮助应用平滑运行在不同基础设施上,是当前最流行的云原生底座。

CNCF 是 2015 年 7 月,Google 联合 Linux 基金会成立的,Kubernetes 是 CNCF 管理的首个开源项目。

02

云原生定义
演变过程

Pivotal 是 Cloud Native/云原生应用的提出者,其还推出了 Pivotal Cloud Foundry 和 Spring 系列开发框架,是云原生的先驱者和探路者。

2015年,来自 Pivotal 公司的 Matt Stine 编写了一本名为《迁移到云原生应用架构》的电子书,提出云原生应用架构应该具备的几个主要特征:

  • 符合12因素应用 (Twelve-Factor Applications)

  • 面向微服务架构 (Microservices)

  • 自服务敏捷架构 (Self-Service Agile Infrastructure)

  • 基于API的协作 (API-Based Collaboration)

  • 抗脆弱性 (Antifragility)

而在 Pivotal 最新的官方网站 https://pivotal.io/cloud-native 上,对 Cloud Native 的介绍则是,如下图所示的四个要点。

CNCF 建立之后,以云原生为核心打造云原生生态体系,初期对云原生的定义包含以下三个点:

应用容器化(software stack to be Containerized)、面向微服务架构(Microservices oriented)、应用支持容器的编排调度(Dynamically Orchestrated)

认为云原生由微服务架构,DevOps 和以容器为代表的敏捷基础架构组成,包含了一组应用的模式,用于帮助企业快速,持续,可靠,规模化地交付业务软件。

2018 年,随着社区对云原生理念的广泛认可和云原生生态的不断扩大,加入 CNCF 的项目和会员大量增加,起初的定义已经不再适用,因此 CNCF 对云原生进行了重新定位。

2018 年 6 月,CNCF 正式对外公布了更新之后的云原生定义 (包含中文版本)  v1.0 版本 (节选):

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。[2]

可以看到,云原生是不断生长和变化的,定义只是针对某一阶段的技术总括,重要的是技术的背后,如何为生产和发展带来变革和进步。

云原生全景图

云原生通过什么方式来实现呢?首先,来简单了解一下云原生全景图。

CNCF 自 2016 年 12 月起,开始维护云原生全景图,主要包含四行、两列,除此之外,最底部还展示了 Kubernetes 认证服务提供商和培训合作伙伴。云原生全景图汇总了社区成熟、使用范围较广以及具有最佳实践的产品和方案,为企业构建云原生体系提供参考。

四行包括应用定义及部署 (App Definition and Development)、编排与管理 (Orchestration & Management)、运行环境 (Runtime)、配置 (Provisioning) 等板块。

其中第四行配置板块,提供了构建云原生基础设施的工具。往上的运行环境指的就是容器运行环境,包括了容器存储、容器计算、容器网络三大类工具。编排与管理板块则涵盖了管理应用程序所需的工具,如服务网格、容器编排、服务代理、API 网关等。最上层的应用定义及部署板块,主要包括定义和开发应用程序的工具,比如数据库、镜像构建和 CI/CD 工具。

云原生全景图右侧的两列,包含平台 (Platform)、可观测性和分析 (Observability and Analysis)、无服务 (Serverless) 等板块。

其中可观测性和分析板块,主要罗列了监控、日志分析、追踪、混沌等各类工具,平台板块展示了从服务、安装、主机到分布管理的各厂家的技术分布情况。无服务板块包含的内容比较广泛,细分为工具、安全、框架、注册平台和可安装平台等五大模块。

「DaoCloud 道客」长期深耕开源社区,作为最早一批加入 CNCF 基金会的云原生企业,不仅入选了全景图平台类解决方案提供商,并于 2018 年成为 CNCF 官方认证的 Kubernetes 服务提供商和培训合作伙伴,其开源的 Merbridge 项目于近期入选了服务网格 (Service Mesh ) 模块。

03

新一代 CNI
Cilium

云原生这两年最火的技术,当属新一代 CNI--Cilium 和服务网格,为何都对它们青睐有加?它们有何重要作用?接着带大家了解,这两个技术的起源和技术架构。

发展脉络

从 2013 到 2018 年,Kubernetes 网络技术栈经历 flanel、weave、Calico、Mac Vlan 等网络方案,然而随着容器密度的增大,以及生命周期的变短,给原生容器网络带来的挑战也越来越大。2017 年 DockerCon 上 Cilium 第一次发布就备受瞩目,2019 年 Google 全面参与 Cilium 项目。

Cilium 是一个开源软件,用于透明地提供和保护使用 Kubernetes、Docker 和 Mesos 等Linux 容器管理平台部署的应用程序服务之间的网络和 API 连接及安全。

Cilium 基于一种名为 eBPF 的新 Linux 内核技术,可以在 Linux 内部动态插入强大的安全性、可见性和网络控制逻辑,不需要更新应用代码或重启服务本身就能实现强大的安全可视化功能。除了提供传统的网络级安全性之外,eBPF 的灵活性还可以在 API 和进程级别上实现网络安全管理,以保护容器或容器内的通信。[3]

Cilium 还可以提供传统网络第 3 层、4 层隔离功能,以及基于 http 层上隔离控制,来实现更强的安全性隔离,如高阶 Network Policy、7 层流量控制、取代 kube-proxy 等等。

Cilium 架构

Cilium 是沟通容器编排系统和 Linux Kernel 的中间层,可以为上层编排系统中大规模和高度动态的容器环境,提供弹性、可视化的网络安全管理。下层可以基于运行在 Linux 内核的 eBPF 程序,动态地插入和控制容器网络的转发行为以及安全策略执行。

Cilium 的架构分为以下几个部分:

  • Key-Value 数据存储库用于存储策略信息等;

  • Cilium Agent 组件是用户空间守护程序,沟通容器运行时和容器编排系统,接受上层配置;

  • Cilium Operator 以集群为单位,管理和规范集群中的任务;

  • 客户端的命令行工具 Cilium CLI,可以与 Cilium Agent API 交互,并提供直接访问 eBPF 的工具。

此外,Cilium ClusterMesh 实现了一个 CNI 互联多个集群,扩展了 Cilium CNI 的能力。ClusterMesh 打通了多集群之间的网络通信能力,并提供全面可靠的安全策略、负载均衡、透明的跨集群服务发现、透明加密、Pod 路由等能力。

04

服务网格
ServiceMesh

微服务出现前,系统之间通过 SOA 和 ESB 服务总线,进行信息交换和通信治理。而进入微服务时代,每个服务执行一些离散的业务功能,随着分布式服务的部署 (比如基于 Kubernetes 的系统) 规模和复杂性的增长,业务系统可能会变得更加难以理解和管理。

服务与服务之间通信需求包括发现、负载平衡、故障恢复、度量和监视,通常还有更复杂的操作需求,比如 A/B 测试、canary 部署、速率限制、访问控制、加密和端到端身份验证等等。

而微服务治理体系也有不同的方案,其中以 Spring Cloud/Dubbo 为代表的传统微服务框架作为第一代治理体系,获得了很广泛的使用,但是它也带来了一些问题:代码侵入性、难以跨语言、升级困难等,这催生了云原生微服务治理体系的诞生 -- 服务网格,也就是 ServiceMesh。

Istio介绍

作为服务网格的实现产品,Istio 一经推出就备受瞩目,成为各大厂商和开发者争相追逐的 “香饽饽”,当前 Istio 已经成为 Service Mesh 的事实标准

它是一个完全开源的服务网格,以透明层的方式构建在现有分布式应用中。它能够提供各种 API 的平台,可以与常见日志监控系统或策略系统集成,实现流量管理、访问策略、收集数据等功能,而所有这些功能都对业务代码透明,即不需要修改业务代码就能实现。

Istio 的多样化特性可以高效地运行分布式微服务架构,并提供一种统一的方式来保护、连接和监控微服务。[4]

Istio 的架构

对服务网格来讲,业务代码无侵入和网络层的全权代理是其重要的优势

Istio 的架构分为数据面 (Data Plane) 和控制面 (Control Plane),与Kubernetes 的架构非常相似,可以很好地解耦各个功能组件。

控制面,管理 Istio 的所有功能,包括 Pilot、Mixer、Citadel 和 Galley 服务组件。

数据面,通常以 Envoy 作为应用容器的代理程序,常被称为 “Sidecar”,主要接管服务的进出流量,接受控制组件的控制,并向控制面传递遥测数据 (日志、监控和链路追踪信息) 。

eBPF 加速服务网格

虽然 Istio 有很多优势,但是它却牺牲了服务通信的性能,增加了访问的延迟,而社区当中也有对其进行性能优化的方案。如,使用eBPF 加速服务网格,就是其中一个比较火热的话题。

在服务网格的情况下,代理在传统网络中作为 sidecar 运行,数据包到达应用程序的路径相当曲折,入站数据包必须穿越主机 TCP/IP 栈,通过虚拟以太网连接到达 Pod 的网络命名空间。[5]

而在 eBPF 加速、无 sidecar 的服务网格模型中,网络数据包通过的路径要短得多,支持 eBPF 的网络允许数据包走捷径,绕过内核的部分网络堆栈,这可以使 Kubernetes 网络的性能得到显著改善。

在基于 eBPF 的 Kubernetes CNI 实现中,如 Cilium 还支持在每个节点使用一个 Envoy 代理实例,运行服务网格的数据平面,减少 sidecar 的资源开销,提升性能

Merbridge

Merbridge 是「DaoCloud 道客」的一个开源项目,实现了通过一行代码开启 eBPF ,代替 iptables,在服务网格场景下,完全无感知地对流量通路进行加速。同时,不会对现有的 Istio 做任何修改,原有的逻辑依然畅通。这意味着,如果以后不再使用 eBPF,那么可以直接删除掉 DaemonSet,改为传统的 iptables 方式后,也不会出现任何问题。

05

更多开源项目

「DaoCloud 道客」是一个生长在开源、云原生上的一个企业,我们深耕云原生开源项目,同时,也把一些优秀的项目推到了开源社区,积极推动和贡献开源社区。除了上面提到的 Merbridge,我们还开源了以下项目。

Clusterpedia

在多集群时代,我们可以通过 cluster-api 来批量创建管理集群,使用 Karmada/Clusternet 来分发部署应用。但是,我们要如何去统一地查看多个集群中的资源呢?似乎还缺少一个趁手的工具。

Clusterpedia 解决了这一问题,通过加持 kubectl,即可实现多集群资源的复杂检索

HwameiStor

在云原生时代, 应用开发者可以专注于业务逻辑本身,而应用运行时所需的敏捷性、扩展性、可靠性等,则下沉到基础设施软件和运维团队。

HwameiStor 正是满足云原生时代要求的储存系统。它具有高可用、自动化、低成本、快速部署、高性能等优点,可以替代昂贵的传统 SAN 存储

回顾|领略云原生技术之美相关推荐

  1. 精彩回顾|Meetup 合肥站--云原生技术沙龙

    2022 年 8 月 13 日,安徽开发者社区联合 SOFAStack 社区.Apache APISIX 社区和云原生社区在合肥共同举办了云原生技术沙龙.本次活动吸引了众多当地的开源爱好者和参与者前来 ...

  2. 2022 年第一场云原生技术实践营开启报名

    2021 年,我们在上海.深圳.广州.郑州.北京等地举办了不同主题的云原生技术实践营活动,和客户们共同交流.一起动手,体验容器.Serverless 等实实在在的云原生技术,实现降本增效. 2021年 ...

  3. 2020 云原生技术 7 大领域趋势全预测

    文章联合撰稿人(排名不分先后) 叔同.谷朴.不瞋.育睿.许晓斌.至简.典违.鲁直.改之.小剑.汤志敏.白慕.循环.文卿,喽哥.水鸟.神秀. 在筹备阿里云首届云原生实践峰会的过程中,我们展开了对云原生技 ...

  4. 如何成为云原生技术高阶玩家?华为云最近做了这件事

    摘要:为进一步推进云原生技术的普及,帮助广大技术爱好者快速掌握云原生相关技能,华为云云原生团队重磅推出<华为云云原生王者之路集训营>系列课程. 十年云计算浪潮下,DevOps.容器.微服务 ...

  5. 易用、弹性、开放 — 云原生技术是数字时代的“水电煤”

    数字原生企业是什么样的企业?企业如何通过云原生架构实现数字原生的飞跃?全社会数字化创新进程如何加速?6月15日在北京召开的云原生产业大会上,阿里研究院.中国信息通信研究院.阿里云联合发布了云原生产业白 ...

  6. 2022云原生峰会开启报名 | 一年一度云原生技术风向标就看这里!

    一年一度云原生技术风向标 云原生峰会,来了! 2022 年 11 月5 日,杭州云栖小镇 锁定云栖大会,预约云原生峰会 去年云栖大会,阿里云面向业界提出: "阿里巴巴实现了全球最大规模的云原 ...

  7. Tech Talk 活动回顾|云原生 DevOps 的 Kubernetes 技巧

    前言 在席卷全行业的云原生趋势中,企业虽然通过云原生转型收获了很多成果和价值,但也遇到了不少障碍和挑战.其中,由于云原生项目工具数量庞大且缺乏整体规划和标准,企业在 DevOps 场景中就因此遇到了种 ...

  8. kubernetes k8s 云原生技术

    云原生 [整理总结自 CNCF × Alibaba 云原生技术公开课] [非全部内容] [图片看不到,可以去gitee上看] 文章目录 云原生 相关定义和概念 技术范畴 两个理论 云原生关键技术点 容 ...

  9. 云原生技术系列:Service Mesh(服务网格)

    导言: 在复杂业务的后端服务开发中,拆分出的微服务往往是数十个.上百个,即使用上了容器技术方便了其打包部署,使用了 Kubernetes 进行便捷的容器编排管理,但众多微服务之间往往涉及到复杂的业务通 ...

最新文章

  1. Safair 浏览器cllick事件不生效或者需要双击才生效
  2. ​纽约伊坎医学院房刚组诚聘博士后: 表观基因组, 宏基因组, 精准医疗
  3. QT的QDBusVariant类的使用
  4. 一次详细全面的***报告
  5. 按照要求输出相应的二维数组
  6. python应用html模板,Flask框架如何使用HTML模板
  7. mysql数据库优化教程_mysql数据库索引优化学习教程
  8. java接口中多继承的问题
  9. Android让文本输入框默认不获取焦点
  10. 艺术名家|翰墨异彩“三分书”——访知名书法家蔡爱军
  11. mysql随机生成中文姓名_编写mysql函数 随机生成中文姓名
  12. 基于单片机的智能电风扇设计
  13. 巴比特 | 元宇宙每日必读:“由虚向实”的工业元宇宙落地情况如何?未来又将走向何方?...
  14. R语言:Windows字体数据库里没有这样的字体
  15. 【Translate插件】报错:更新TTK失败,请检查网络连接问题
  16. 2017年10月WEB前端开发实习生面试题总结
  17. 14.PowerShell--抛出异常,错误处理
  18. c语言流动字体显示的程序,1602字符液晶显示屏程序详解(C语言详细解说)
  19. rtthread的console
  20. java逻辑值_java、 若x = 5,y = 10,则x y和x = y的逻辑值分别为 和 。...

热门文章

  1. python vimdiff_vimdiff使用技巧
  2. SAP HANA XS ODATA使用参数展示具体数据
  3. 中石油布局天然气商储 天然气国家储备有望
  4. dp 母函数 入门 + 模板
  5. Android端+java后端+servlet+MySQL的型男塑造平台【前后端源代码+论文+答辩ppt】
  6. MSDC 4.3 接口规范(27)
  7. S100数字源表之LDO芯片电学特性测试方案
  8. 0基础转行软件测试从哪开始学,怎么有效学?
  9. html5做交互页面,分享9 个令你忍不住想狂点鼠标的趣味HTML 5 交互网站
  10. 鬼谷子谋略之空手套白狼