云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。相较于早年的云原生技术生态主要集中在容器、微服务、 DevOps 等技术领域,现如今的技术生态已扩展至底层技术、编排及管理技术、安全技术、人工智能技术、数据库技术以及场景化应用等众多分支,初步形成了支撑应用云原生化构建的全生命周期技术链。
云原生Everywhere
基于DevOps,微服务,容器编排,服务网格等技术和设计思想构建云原生应用,已逐渐得到了业界的认可和接受,并在各行各业进行了大量的实践和应用。除了构建用户应用以外,云原生的设计思想也广泛用在PaaS和IaaS的产品设计里面。 在PaaS服务领域,大量的组件和框架也正在基于云原生的设计思想进行演进,例如云原生的数据仓库Snowflake,基于AWS以及Azure公有云提供data-warehouse-as-a-service服务;例如云原生的Apache Pulsar消息队列,采取了存算分离的设计架构,支持多租户,其架构设计能够充分利用分布式的、能够弹性伸缩的云端资源。 在IaaS服务领域,同样云原生产品也不断涌现。例如,KubeVirt基于Kubernetes集群,将容器技术与KVM技术进行结合,创建基于容器的虚机;例如云原生存储的发展也非常迅速,通过容器向外提供存储服务,包括Longhorn,OpenEBS等项目用于提供块存储服务,Minio用于提供对象存储等。 在网络功能层面,CNF (Cloud-native Network Function)的概念已经提出,作为VNF(Virtualized Network Functions)在容器领域的专用术语,提出了基于容器技术实现虚拟网络功能的思路,包括但不限于路由器,交换机,VPN,防火墙等。 在未来几年,基于云原生设计思想的各种产品和应用将会继续层出不穷,将会覆盖到云计算的各个方面和所有领域,提升基础设施以及业务应用的敏捷开发部署,弹性伸缩,自动恢复等能力。
多云/混合云
云原生通过容器技术,定义了标准的镜像格式,统一了应用的打包标准,提供了一致的运行环境。云原生通过Kubernetes容器编排技术,定义了各种标准对象,以及自定义对象的扩展机制,并通过声明式API的终态机制管理Kubernetes各种对象构建用户应用。Kubernetes对资源层和应用层进行了解耦,形成了分布式系统下应用统一发布的事实标准,解决了多云/混合云环境下厂商锁定,应用难以迁移的问题,极大的促进了多云/混合云的发展和部署。 多云/混合云的环境下,通常会部署多个Kubernetes集群。通过集群联邦技术,可以跨集群管理应用程序,在满足容灾、隔离等要求下提升资源的使用效率,并提供类似于单个集群环境的用户操作体验。kubefed v2提供了跨集群同步资源,以及基于DNS服务器和负载均衡的跨集群发现功能;该项目在2021年6月份发布了0.8版本,已实现集群联邦的主要功能,当前也在一些小规模生产环境下得到部署和应用,后续有望应用到更多的多云以及混合云多集群管理场景。支持多集群管理的另外一个方案是Virtual-Kubelet,顾名思义就是实现一个虚拟 kubelet,并提供操作 pod 的接口供用户来实现达到和真实 kubelet 有相同行为的目的。
边缘计算
随着物联网,人工智能,5G等技术的快速发展,智能终端设备数量呈迅速增长趋势,业界对边缘计算的重要性和必要性也达成一致,未来几年,将是边缘计算走向成熟和规模部署的重要时间与机遇窗口。在边缘计算领域,基于Kubernetes 等云原生技术,有助于实现大规模异构设备接入、镜像管理、应用分发、应用升级、应用运维等边缘业务生命周期管理,有利于支持云边以及边边的统一协同与调度,支持云端统管,边端自治的分级业务模型。 在容器编排技术方面,Kubernetes的轻量级版本不断涌向和走向生成环境,例如K3s,Microk8s, K0s以及OpenShift都针对边缘计算场景不断优化资源需求,降低环境依赖,支持更广泛和灵活的异构部署能力。 在容器集群管理方面,集中控制平面的技术和产品也日渐成熟,包括Anthos,Rancher,KubeOne等,方便对大量分散的边缘集群以及边缘应用进行统一管理,向上呈现出一个统一的管理和控制平面。 另外,提供边缘计算整体解决方案的开源技术也不断发展和成熟,例如KubeEdge,OpenYurt等,将容器化应用编排功能扩展到边缘的节点和设备,并为云和边缘之间的网络,应用部署和元数据同步提供基础架构支持。
可编程Linux内核
Linux内核是云原生的事实标准操作系统,由于Extended Berkeley Packet Filter(eBPF)的引入,它的使用方式开始发生根本性的转变。虽然最初的目标是用于高级内核监控,但这个原始BPF的内存映射扩展可以在内核空间中运行任何沙盒程序,而无需更改内核源代码或加载模块。 随着支持eBPF功能的内核版本的普及,正在出现并将会出现更多的基于eBPF功能的产品与方案。例如,Cilium通过eBPF为使用Kube-Proxy进行流量路由提供一种更快的替代方案;Falco使用eBPF进行容器安全检查等。
容器运行时安全
容器技术作为云原生的核心技术之一,提供了应用封装能力,使得“一次打包,到处运行”成为现实,极大的提高了应用的交付和部署能力。容器技术采用共享宿主机内核方式运行,利用内核特性实现对不同用户的命名空间进行隔离,使用 CGroups进行硬件资源分配与限制。实现原理决定了容器的隔离性和封闭性,还是低于拥有独立GuestOS的虚拟机。由于操作系统内核漏洞,容器组件设计缺陷,以及不当的配置等,都可能导致容器发生逃逸,从而获取宿主机权限。 目前有Firecracker,Kata,gVisor等项目致力于解决上述安全隐患,打造安全容器。其中Firecracker,Kata的解决方法是让容器运行到一个特定的轻量级虚拟机中,优化内存大小,减少外设类型,提供单独内核增强容器隔离;而gVisor则通过拦截容器中应用的系统调用,模拟了一个操作系统内核。可以预见,未来几年基于这几种技术的安全容器将会得到广泛应用。
云原生持续交付模型
GitOps是一种实现持续交付的模型,它的核心思想是将应用系统的声明性基础架构和应用程序存放在Git的版本控制库中。通过GitOps,当使用Git提交基础架构代码更改时,自动化的交付流水线会将这些更改应用到应用程序的实际基础架构上。GitOps还会使用工具将整个应用程序的实际生产状态与基础架构源代码进行比较,然后它会告诉集群哪些基础架构源代码与实际环境不匹配。从实用的角度来看, GitOps提升了开发者体验和云原生开发效率,随着Argo、GitLab、Flux等项目的不断成熟,GitOps在云原生持续交付领域会扮演更重要的角色。
智能运维
AIOps,即 Artificial Intelligence for IT Operations,智能运维,将人工智能应用于运维领域,基于已有的运维数据(日志、监控信息、应用信息等),通过机器学习的方式来进一步解决自动化运维没办法解决的问题。AIOps采用分析和机器学习技术分析从多种IT运营工具和设备收集的大数据,自动实时确定并应对问题,从而实现IT运营的自动化和增强。 云原生技术的发展,以及云原生应用的普及,也促进智能运维的发展,使得智能运维概念具备了落地的可能。一方面,Kubernetes使得应用具备了弹性扩缩容,故障自愈等能力。另一方面,通过部署云原生的人工智能应用,对集群和应用的性能数据,故障率,异常事件进行训练和建模,也极大的提升了运维的智能化水平。
|