CNCF 生态蓝图的八个领域及路线图概述
CNCF 由 Google 于 2015 年 7 月发起成立,隶属于 Linux 基金会。其目标愿景是“致力于使云原生计算具有普遍性和可持续性,维护和集成云原生开源技术,围绕一系列高质量项目建立社区,支持容器化编排的微服务架构应用”。其职责范围是促进云原生标准制定,促进生态系统的发展和演变,管理项目,推进云原生社区发展。
生态蓝图的八个领域
CNCF 维护了 Cloud Native Landscape 的生态蓝图(https://landscape.cncf.io/),目前所涉及的云原生相关的产品、技术和生态分为 8 个主要的领域及方向。
1.云基础设施(cloud)
按云的部署位置可以分为公有云和专有云(私有云)。
公有云是指云基础设施部署在互联网上,用户可以通过互联网渠道直接获取云厂商提供的云产品服务(IaaS、PaaS、SaaS)。
专有云是指用户在自己的 IDC 机房,采用云的技术及产品搭建自己专属的云平台环境。专有云平台除了可以使用商业云厂商提供的云底座,还可以使用开源的虚拟化技术搭建,如 VMware、OpenStack、ZStack、CloudStack 等。
2.环境部署(provisioning)
有了物理机和虚拟机,在运行容器服务之前,我们还需要为容器准备标准化的基础环境,如自动化部署工具、容器镜像工具、安全工具等,以支持基础设施的运维自动化。
3.运行时(runtime)
运行时是容器核心的云原生技术,为容器运行提供虚拟化隔离的运行支撑环境,包括虚拟化的计算资源、虚拟化的存储资源、虚拟化的网络环境。
云原生计算:Linux Container(LXC)容器是一种内核轻量级的操作系统层虚拟化技术,通过 Linux 的 Namespace 和 Cgroup 两大机制来实现资源的隔离和限制管理,它为应用软件及其依赖组件提供了一个资源独立的运行环境。
云原生存储:因为容器的生命周期很短的特点,所以容器的状态(存储的数据)必须独立于容器的生命周期,也正因如此,容器的存储变得非常重要。Docker 的数据持久化存储主要有两种方式——数据卷(data volume)和数据卷容器(data volume container)
云原生网络:绝大部分云厂商为用户提供了虚拟专有云服务(VirtualPrivate Cloud,VPC),便于用户构建云环境下可定制的虚拟网络方案。
4.编排和管理(orchestration & management)
对于云原生系统,容器编排调度才是核心。Kubernetes 是世界上最受欢迎的容器编排平台和第一个 CNCF 项目。Kubernetes 帮助用户构建、扩展和管理应用程序及其动态生命周期.Kubernetes 面向未来的应用程序开发和基础设施管理可以在本地或云端进行,无须绑定供应商或云提供商。
5.应用层(App definition and development)
容器平台最终还是要运行应用的,最主要的应用当然是各个公司的业务,除此之外还有一些比较通用的行业应用,可以根据需求提供类似于应用市场的功能。应用层提供的技术及产品,既包括涉及跟应用开发相关的基础产品(如数据库、消息队列、缓存、流计算等),也包括跟应用开发相关的软件过程管理(如代码库、镜像库、DevOps)。
6.平台服务(platform)
平台服务是指基于容器技术的更上一层的封装,对开发人员、运维人员提供更加友好的、便捷的、基于容器的应用开发能力,让容器作为一种基础设施服务开箱即用——容器即服务(Container as a Service,CaaS)。如果说容器关心的是应用,那么 Serverless 关心的则是函数,由此也催生出一些新的应用开发模式,如函数即服务开发模式(Functions as a Service,FaaS)、后端即服务开发模式(Backend as a Service,BaaS)、小程序开发模式等。
7.监控分析(observability & analysis)
监控系统的运行健康,以确保业务的稳定可靠,是运维工作的主要内容。监控分析包括运行监控(主机监控、容器监控、应用监控)、分布式日志(日志采集、实时流计算、日志分析)、分布式追踪(全链路追踪、架构感知)等应用领域。
监控分析是容器平台运维的重中之重,云原生建设降低了应用部署、升级、构建、测试的难度,但是把难度下沉到容器平台,原来的运维工具和思路需要变化以适应新的容器平台,了解集群中正在发生的事情、及时发现可能出现的问题,才能保证业务应用稳定高效地运行。
8.合作伙伴(special)
CNCF 会员(白金会员、金牌会员、银牌会员)已将近千家。不同厂商在云原生生态的不同领域贡献自己的产品、技术以及服务(认证、培训、咨询),让整个生态得到蓬勃发展。各种标准的制定也加速了云原生生态的融合,打通不同领域产品交互的屏障,降低用户技术选择与平台迁移的成本。
云原生应用路线图
为了帮助企业推动云原生应用的落地,从而更好地适应环境与业务的发展,CNCF 给出了云原生应用路线图——Trail Map,路线图分成 10 个步骤来实施,每个步骤都涉及用户或平台开发者将云原生技术在实际环境中落地时需要循序渐进思考和处理的问题,企业在不同的步骤可以结合 Landscape 中列出的产品或服务进行选择。
1. 容器化
容器化是云原生的第一步,如果不对应用程序进行容器化,就无法实现云原生。容器是一个标准的软件单元,它将代码及其所有依赖关系打包起来,这样应用程序就可以从一个计算环境快速、可靠地运行到另一个计算环境。
2. CI/CD
设置 CI/CD 环境,从而使源代码上的任意修改都能够自动通过容器进行编译、测试,并被部署到预生产环境,甚至生产环境中,部署过程中如果有任何异常,可以方便快速地回滚到上一个稳定的版本。
3. 应用编排
容器编排主要是管理容器的生命周期,尤其是在大规模复杂的生产环境中,软件团队使用容器编排来控制和自动化许多任务。Kubernetes 是目前市场上应用编排领域中使用最广泛的工具。
4. 监控和分析
在这个步骤中,用户需要为平台选择监控、日志以及跟踪的相关工具。Kubernetes 提供了有关应用程序在容器集群上的资源使用情况的详细信息,并不提供应用运行监控的解决方案,将 Prometheus 用于监控、Fluentd 用于日志、Jaeger 用于整个应用调用链的追踪。通过这些信息,我们可以评估应用程序的性能,并可以消除瓶颈,从而提升整体性能。
5. 微服务及服务网格
容器技术激发了微服务及服务网格的快速发展,微服务是云原生架构下应用之间交互的主要方式。服务网格,是连接服务、发现服务、健康检查、路由,并用于监控来自互联网的入口。服务网格通常还具有更复杂的操作要求,如灰度发布、限流降级、访问控制和端到端身份验证。
Istio 提供了对整个服务网格的行为洞察和操作控制,提供了完整的解决方案以满足微服务应用程序的各种需求。CoreDNS 是一种快速灵活的工具,可用于发现服务。Envoy 和 Linkerd 都提供服务的健康检查、请求路由和负载均衡等功能,以支持服务网格体系结构。
6. 网络及策略
云原生架构下启用更灵活的网络层非常重要。要启用更灵活的网络,要使用符合容器网络接口(Container Network Interface,CNI)的网络项目,如 Calico、Flannel 以及 Weave Net 等软件用于提供更灵活的网络功能。
7. 分布式数据库和存储
实现持久层的分布式,根据其实现方案分为分布式数据库中间件与分布式数据库两种形式,其目标都是为了实现数据库持久层的弹性和伸缩能力。
CoreOS 和 Kubernetes 等项目中都用到了 etcd 组件,其作为一个高可用强一致性的分布式键值数据库,用于服务发现。etcd 安装配置使用简单,提供 HTTP API 访问。
8. 流和消息处理
当应用需要比 JSON-REST 这个模式更高的性能时,可以考虑使用 gRPC 或者 NATS。gRPC 是一个通用的远程过程调用(Remote ProcedureCall,RPC)框架(类似各种框架中的 RPC 调用),NATS 是一个发布、订阅和负载均衡的消息队列系统。
9. 容器镜像库和运行环境
可以使用 Harbor 作为镜像私库进行存储以及对镜像的内容进行扫描。容器并非只有 Docker 一种,容器的运行环境更是如此,可以选择不同的容器运行环境,但需要注意选择具有 OCI 兼容性的方案,比如 containerd 或 cri-o。
10. 软件分发
最后可以借助 Notary 等软件用于软件的安全发布。Notary 实现了更新框架(The Update Framework,TUF);TUF 提供了一个框架(一组库、文件格式和使用程序),可用于保护新的和现有的软件更新系统。该框架应该能够使应用程序免受软件更新过程中所有已知攻击的影响。它不涉及公开关于正在更新的软件或更新内容的信息。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/cbfaf76b7ced4cf90ba430c19】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论