Kubernetes之上到底该构建什么?这些或许能给你启发

Kubernetes已经成为各种规模企业在生产环境事实上的容器编排平台,在各种应用中设置Kubernetes都是基础。

那么在Kubernetes集群之上到底要构建什么?比如,Web和API层中的无状态应用程序是很好的初始用例,Kubernetes帮助其补足了安全性,可伸缩性和开发者生产力方面的差距。但不限于此!

服务网格

建立在Kubernetes之上的微服务网络带来了分布式计算问题。尽管Kubernetes解决了服务发现,可扩展性问题,但Kubernetes生态系统需要适用于第7层流量网络的解决方案。Istio和Linkerd等服务网格为微服务带来了高级功能,例如流量控制,安全性和可观察性等。服务网格与Envoy等代理相结合,可以为微服务提供强大的安全性和网络抽象。而且,开发者和企业可以受益于通用框架的改编,从而提高了效率和生产率。

Kubernetes之上到底该构建什么?这些或许能给你启发

有状态的工作负载

在Kubernetes中运行有状态工作负载是一个快速发展的方向。因为Kubernetes有名为StatefulSets的内置对象,可为Pod提供网络寻址和顺序保证。将StatefulSet和应用程序运算符组合在一起可以为运行有状态的工作负载(例如需要持久保存状态的数据库和旧版应用程序)提供强大的解决方案。

开发者经验(DevEx)

Kubernetes的学习曲线很陡峭,所以对于企业开发者来说挑战不小。Kubernetes的挑战是有原因的,比如Kubernetes的设计仅具有极少的功能,仅提供了足够的构建基块即可在其之上构建自定义的平台即服务(PaaS)。根据企业的成熟度,平台,DevOps或SRE团队等专业团队可以自定义Kubernetes,并简化应用程序开发者的工作。由于部署容器的成本和时间很少,因此对于产品开发团队而言,自定义设置可能是一种非常强大的机制,可以提高竞争优势。增强的开发者体验很大程度上归功于产品功能的更快上市,以及嵌入式安全的最佳实践。如Skaffold之类的工具可以被用来简化开发者的Kubernetes,再比如微软Azure Dev Spaces提供的快速迭代模型,可以使每个开发者在大型团队设置中使用他们的pod实例。

无服务器

在公有云环境,不一定需要在Kubernetes上构建FaaS(功能即服务)。企业可以简单地利用专用的无服务器解决方案,比如AWS Lambda。无服务器主要有两个方面;开发者的经验是只需简单地上传一段代码,而不必担心基础架构和成本效益问题。如果在本地运行Kubernetes,则仍然可以通过PaaS工具带来无服务器的的体验功能。开发者只需提供他们的git repo即可启动该服务,但这无法带来无服务器的成本效益。在真正的无服务器模型中,仅当调用服务时,容器或进程才会进行冷启动,如Knative之类的框架可能会将无服务器的开发者经验和成本效率特性带入到本地Kubernetes的部署中。

Kubernetes之上到底该构建什么?这些或许能给你启发

机器学习管道

基础架构资源的有效共享是Kubernetes平台的关键功能之一。CPU等硬件资源被过度分配用于工作负载,并且在需要时也会受到限制。GPU可以在多个机器学习容器工作负载之间共享,从而为本地设置带来了成本效益。此外,还有出色的开源机器学习管道,如基于Kubernetes构建的Kubeflow。Kubeflow使数据科学家可以在Kubernetes中有效地运行其模型。Kubeflow补足了共享昂贵的GPU,以及提供强大的数据管道编排机制的差距。

Kubernetes之上到底该构建什么?这些或许能给你启发

云原生CI/CD管道

CI/CD管道通常包括运行一系列测试,例如单元测试,集成测试,静态代码分析,安全扫描,这些在很大程度上是通过Jenkins管道进行编排的。一些团队正在练习将这些Jenkins作业作为容器运行。容器的爆炸性增长,今天的Jenkins正努力扩大部署流程。利用Kubernetes调度程序的功能,有一个全新的出色模型可以运行整个业务流程。这是运行CI/CD编排的云原生方法。如JenkinsX和Tekton之类的项目,将充分利用Kubernetes的编排和调度能力,将你的Jenkins管道提升到新的水平。

相关推荐