万字长文揭穿你,根本就不懂云原生!( 四 )


云原生存在的意义是解放开发和运维 , 而不是让开发和运维的工作变得更加复杂和繁重 。云原生还关注规模 , 分布式系统应该具备将节点进行水平扩展的能力 , 能轻易地扩展到成千上万的规模 , 并且这些节点具备多租户和自愈能力 。云原生使得应用本身具备“柔性” , 即面对强大压力的缓解能力以及压力过后的恢复能力 。
五、云原生当前生态
作为云原生领域最具权威的组织 , CNCF在每年的年度报告中都会提及CNCFLandscape项目 , 该项目开始于2016年11月 , 旨在为云原生应用者提供一个资源地图 , 帮助企业和开发人员快速了解云原生体系的全貌 。CNCFLandscape项目在Github上已经获得超过7000颗星 , 表明广大开发者和使用者对该项目的关注和重视 。该项目给出当前云原生生态的全景图(如下图所示) , 通过该全景图我们可以了解云原生相关的各种类型的项目和产品:
万字长文揭穿你,根本就不懂云原生!
文章图片

文章图片
图4:CNCF生态全景图
这张全景图从云原生的层次结构 , 以及不同的功能组成上 , 展现了云原生体系的全貌 , 可以帮助用户在不同组件层次去选择恰当的软件和工具进行支持 。总体来看 , 云原生生态分为以下几层:
1.Kubernetes服务提供商
图中最底层是Kubernetes认证的服务提供商 , 以及Kubernetes认证的培训伙伴 。
2.Provisioning
有了物理机或虚拟机后 , 在运行容器化服务之前 , 需要为容器准备标准化的基础环境 , 这就是Provisioning这一层的作用 。在Provisioning这一层中 , 分为以下几个功能组成模块:Automation&Configuration:用于自动化部署和配置容器运行平台和环境 , 代表工具和厂商包括Ansible、Chef、Puppet、VMware以及OpenStack 。容器镜像库:容器镜像库是整个CNCF云原生中的核心部件之一 , 因为基于容器的运行环境中 , 所有的应用都需要借助容器镜像库来进行安装和部署 。容器镜像库又分为公有和私有 , 公有的容器镜像库包括docker官方的registry , AWS的ElasticContainerRegistry , Google的ContainerRegistry等 。在私有镜像库中 , VMware中国团队主导的Harbor得到了广泛的应用 , 大量的容器平台目前都基于Harbor构建其镜像仓库 。Security&Compliance:Notary和TUF(TheUpgradeFramework)是这个领域两个主要的项目 , 其中TUF是一个开源的安全标准 , Notary是其中一个实现 。Notary软件除了确保软件的出处外 , 它还能保证在未经容器镜像提供者批准的情况下 , 不会在镜像供应链的任何地方修改镜像内的内容 , 从而确保从开发到运营的过程中 , 安全都被无缝统一地嵌入到整个工作流中 。KeyManagement:主要用于在整个容器平台中进行秘钥管理 。
3.Runtime
Runtime这一层可以理解为容器的整个运行环境 , 是云原生中最核心的部分 , 它包括了计算、存储、网络三大块:ContainerRuntime:Docker是最广为人知的容器运行环境 , 但生产环境下也有一些其他的容器环境在运行 。Containerd是满足OCI规范的核心容器运行时 , 从设计上就是为了嵌入大型系统的 。它由DockerInc公司启动 , 并且在2017年3月份捐赠给了CNCF 。此外 , CoreOS的RKT是一个用于在Linux上运行应用程序容器的CLI , 也可以作为安全、可组合和基于标准的容器虚拟化运行环境 。Cloud-NativeStorage:起初 , 容器为无状态的运行单元 , 容器最上一层文件系统无法保存其在运行时写入的文件或数据 , 容器重建或重启后 , 这些写入的数据将丢失 。但随着数据库、消息队列等中间件逐步在容器环境中得到应用 , 如今用户对容器持久化存储的理解和需求也更加深入和迫切 。Cloud-NativeNetwork:网络历来是虚拟化技术中最灵活多变的部分 , 目前 , 大多数客户使用的主要包括Calico、Flannel、OpenvSwitch等方案 。