跳转到节

Kubernetes模式简介

复制URL

Red Hat被提名为2023年Gartner®Magic Quadrant™的领导者

在Gartner 2023集装箱管理幻方图中,Red Hat在执行能力方面排名最高,在实现愿景方面排名最靠前。

模式描述了问题的可重复解决方案。Kubernetes模式是基于容器的应用程序和服务的设计模式。  

库伯内特斯可以帮助开发人员编写云计算应用程序它提供了一个应用程序编程接口(API)库和用于构建应用程序的工具。 

然而,Kubernetes并没有为开发人员和架构师提供如何使用这些组件构建满足业务需求和目标的完整系统的指导。 

模式是重用架构的一种方式。您可以使用现有的Kubernetes模式,而不是完全自己创建架构,这也可以确保事情按照预期的方式运行

当您试图在Kubernetes之上提供重要的业务服务时,通过反复试验来学习太耗时,可能会导致停机和中断等问题。 

把图案想象成蓝图;它向你展示了解决一整类类似问题的方法。模式不仅仅是解决一个特定问题的逐步说明。

使用模式可能会导致不同的结果;它们不打算提供相同的解决方案。您的系统可能看起来与使用相同模式的其他人不同。然而,这两个系统将具有共同的特点。 

通过使用Kubernetes模式,开发人员可以用Kubernete作为运行时平台来创建云应用程序。

模式是Kubernetes开发人员所需的工具,它们将向您展示如何构建系统。

  • 基础模式涵盖Kubernetes的核心概念。这些模式是构建基于容器的云原生应用程序的基本原则和实践。 
  • 行为模式描述位于基本模式之上的模式,并为管理各种类型的容器和平台交互的概念添加粒度。 
  • 结构模式与在Kubernetes吊舱内组织容器有关。 
  • 配置模式用于Kubernetes中处理应用程序配置的各种方式。这些模式包括将应用程序连接到其配置的特定步骤。 
  • 高级模式包括高级概念,例如如何扩展平台本身,或者如何直接在集群中构建容器映像。

可预测的需求模式

可预测需求模式是Kubernetes的基本模式。这种模式确保您的应用程序符合容器化应用程序的基本原则,以便可以使用Kubernetes实现自动化。 

可预测需求模式解释了为什么每个容器都需要声明应用程序资源需求和运行时依赖项。通过定义这些需求,Kubernetes可以在您的集群

使用这些模式可以定义的示例包括运行时依赖关系、资源配置文件、pod优先级和项目资源。

示例:资源配置文件

您需要以请求和限制的形式指定容器的资源需求,例如CPU和内存。请求是指所需的最小资源量,而限制是指容器可以消耗的最大资源量。 

调度程序在将pods放置到节点时使用请求量。调度程序只会将一个pod调度到一个有足够容量容纳它的节点

如果未设置资源需求,则容器将被视为优先级较低的容器,如果节点耗尽可用资源,则首先终止容器。

配置模式

所有应用程序都需要配置,尽管在源代码中存储配置是一个简单的选择,但它并没有给您在不重新创建应用程序映像的情况下调整配置的灵活性。外部配置允许您根据环境进行调整。

配置模式将帮助您使用外部配置定制和调整应用程序,以适应不同的开发、集成和生产环境。 

示例:EnVar配置

EnVar配置模式最适合于配置变量的小集合,其中可以使用普遍支持的环境变量来外部化配置。 

与需要重建应用程序的硬编码配置相比,将应用程序的配置外部化可以使您在构建应用程序后更改配置。 

使用环境变量外部化配置很好,因为任何操作系统都可以定义这些变量,并且任何编程语言都可以访问这些变量。 

对于环境变量,硬编码的默认值通常在构建期间定义,然后在运行时覆盖。

在Kubernetes中,可以直接在控制器的pod规范中设置变量,如部署或副本集。您可以将值直接附加到环境变量,环境变量可以与pod定义分开管理。

您还可以使用Kubernetes Secrets(用于敏感数据)和ConfigMaps(用于非敏感配置)的委托。

高级模式

这些模式包括复杂的主题和最新的模式实现。控制器、操作员、弹性秤和图像生成器模式都是高级Kubernetes模式的示例。

示例:弹性秤

弹性伸缩模式用于通过调整pod副本的数量来水平扩展应用程序,通过调整pods的资源需求来垂直扩展应用程序;并且可以通过更改集群节点的数量来扩展集群本身。

尽管您可以手动处理缩放,但弹性缩放模式允许Kubernetes根据负载自动缩放。 

使用Kubernetes,您可以更改容器的资源、服务所需的副本或集群中的节点数。它还可以监视与外部负载和容量相关的事件,分析容器状态,并扩展所需的性能。 

水平吊舱自动缩放允许您定义一个不固定的应用程序容量,但它有足够的容量来处理不同的负载。水平吊舱自动缩放器用于缩放吊舱。 

为了使用水平吊舱自动缩放器,需要启用度量服务器(资源使用数据的集群范围聚合器),并且需要定义CPU资源限制。您可以从命令行创建水平吊舱自动缩放器的定义。 

水平吊舱自动缩放控制器根据您在命令行中设置的先前确定的定义,不断检索与缩放相关的吊舱的度量。 

它还根据当前值和所需值计算所需的副本数,并更改声明的副本以保持新的所需状态

Red Hat®OpenShift®是一个面向企业的Kubernetes平台。它为开发人员提供了用于构建的自助服务环境,并在任何基础设施上提供了全栈自动化操作。

Red Hat OpenShift包含所有额外的技术,使Kubernetes功能强大,对企业可行,包括:注册表、网络、遥测、安全、自动化和服务。

使用Red Hat OpenShift,开发人员可以制作新的容器化应用程序,托管它们,并在云中部署它们,这些应用程序具有可扩展性、控制性和协调性,可以快速轻松地将好主意转化为新业务。

继续阅读

第条

有状态与无状态

某个东西是有状态的还是无状态的取决于记录与它的交互状态的时间以及该信息需要如何存储。

第条

什么是Quarkus?

Quarkus是一个Kubernetes-native Java堆栈,用于Java虚拟机(JVM)和本地编译,专门为容器优化Java。

第条

什么是无服务器?

Serverless是一种云计算开发模型,允许开发人员构建和运行应用程序,而无需管理服务器。

有关云应用程序的更多信息

产品

一个企业应用程序平台,具有一套统一的测试服务,可根据您选择的基础设施将应用程序推向市场。

资源

电子书

云主动与混合云:战略指南

播客

《命令行英雄》第九季第八集:
“所有人现在都在一起”

电子图书

云计算应用程序的路径

培训

免费培训

使用微服务架构开发云计算应用程序