开源项目使Kubernetes更加强大。人们需要了解这些具有发展前途的开源项目,这些项目可以解决与Java、可观测性、持续集成(CI)/持续交付(CD)管道等相关问题。
就其本身而言,Kubernetes为IT组织带来了很多价值,从开发人员感兴趣的内容提升到可以在生产环境中大规模部署的内容。云原生计算基金会(CNCF)在2019年的一项调查发现,Kubernetes在云计算社区中的使用率从2018年的58%上升到2019年的78%。这种价值的很大一部分来自参与Kubernetes社区的个人和组织的努力。
然而,这也反映了个人和组织创建功能互补的开源工具的工作,这些工具与Kubernetes一起工作,使其更加强大。以下将重点介绍一些开发人员和运营商更感兴趣的内容。
1. Quarkus
Java是最流行的编程语言之一,诞生于上世纪90年代中期。在近20年的时间里,它主要针对运行的动态应用程序进行了优化,这些应用程序假定(虚拟化)主机CPU和内存拥有唯一的所有权(尽管采用了早期的面向服务架结构(SOA)的方法)。企业的应用程序就是按照这种方式编写的。
尽管仍然存在大型应用程序(“宏伟整体”有时仍然是最好的方法),但出于生产力、灵活性和效率的考虑,组织正在向支持微服务、反应性、功能即服务(FaaS)、12要素原则,以及向云原生应用的世界迈进。这需要重新思考如何在这样的环境中更好地使用Java。
2. OpenTelemetry
EMA公司分析师Torsten Volk指出,最近Kubecon的热门话题之一是可观测性。可观测性这一术语可以涵盖很多领域,但是典型的定义涵盖指标、跟踪和日志记录。该领域中的两个大型项目是Prometheus(一种基于时间序列数据模型构建的系统监视和警报工具包)和Jaeger(一种分布式跟踪工具)。监测也很重要,但通常被认为与可观测性不同。
OpenTelemetry是该领域的最新产品,它是谷歌公司的OpenCensus与Lightstep公司的OpenTracing在2019年合并而成的。
除了项目本身之外,使OpenTelemetry变得有趣的一件事是,它在分布式系统可观察性空间中至少表现出一些统一性。实际上,在庞大的CNCF格局中,有许多开源项目在一定程度上相互重叠,在一定程度上可以相互补充,有时可以彼此集成,并有可能会出现一种更广泛的相关项目组合模式。
3. Argo CD和Keptn
持续集成(CI)/持续交付(CD)领域的项目正在考虑使用Kubernetes原生开发模式和流程来构建和部署管道。例如,Tekton Pipelines在Kubernetes上运行,将Kubernetes集群作为第一类,并使用容器(和容器)作为其构建基块。流行的Jenkins构建工具的分支Jenkins X同样针对云原生开发世界。
虽然Tekton可以处理完整的持续集成(CI)/持续交付(CD)管道,但一些较新的项目旨在增加部署管道的灵活性和能力。
就其本身而言,Tekton有效地将部署推向一个或多个Kubernetes集群。如果出现故障,Tekton必须在任何地方重新推送部署,或者操作人员需要人工推送任何失败的部署。相比之下,Argo CD是一个声明性GitOps工具。它确保正确的部署状态反映在活动集群中,持续地监视它们,并采取任何必要的操作来使所需的状态和实际状态保持一致。
Keptn是另一个项目,可以单独使用Argo CD的部署功能。但是它最关注的是对投入生产的代码进行额外的测试、评估和升级。
4. Envoy和Contour
以上谈到了与基于微服务的分布式应用程序相关的可观察性挑战。还需要处理集群内部以及集群与外界之间的微服务之间的流量。
数据传输,即Kubernetes中的“数据平台”,已经在Envoy周围实施标准化。Envoy与每个应用程序同时运行,并通过与平台无关的方式提供通用功能来抽象化网络。
像Istio这样的服务网格可以建立在Envoy的基础上,以提供安全性、流量方向和集群内部(东西向流量)以及集群与外界之间(南北向流量)的洞察力。其服务网格可以是操作大型基于微服务的应用程序的宝贵工具。它们也很复杂,也可能规模过大。像Contour这样的项目只关注南北向流量;它使Envoy作为一种简单、可靠的负载平衡解决方案可供Kubernetes用户使用。
5. OKD 4、Fedora CoreOS和CodeReady容器
如果组织正在寻求开发人员和运营工具的Kubernetes社区发行版,需要查看OKD。可以将其视为Red Hat OpenShift产品的“上游”项目。但是,与Universal base Image的引入实际上更多的是同级关系,它允许更新的代码并行地流入项目和产品中。
OKD 4使用Fedora CoreOS作为节点的基本操作系统。 Fedora CoreOS是一个自动更新的小型操作系统,用于安全地运行容器化工作负载。OKD 4提供了一个Kubernetes集群,该集群具有最新的安全修复程序和新功能,例如对cgroups v2的支持,它还为Kubernetes运营商提供支持。
OKD还支持安装程序提供的基础设施。在许多平台上,安装程序控制安装过程的所有区域。虽然不像用户提供的基础设施那么灵活,但它的使用要简单得多,并且通常应被视为大多数用户的默认设置。
最后,为了在开发人员准备将代码推送到持续集成(CI)/持续交付(CD管道之前为他们提供帮助,OKD 4允许组织使用CodeReady容器在笔记本电脑或台式电脑上设置更少的预配置本地Kubernetes集群,以便进行开发和测试。它们是开始构建OKD(或OpenShift)集群的最快方法。
更多来自Kubernetes社区的信息
如果了解一下CNCF格局,就会发现几乎没有涉及关于Kubernetes的社区创新。但是这些内容应该使人们对在新的一年中应该保持关注的项目和领域有所了解。