可预测的需求模式
可预测需求模式是Kubernetes的基本模式。这种模式确保您的应用程序符合容器化应用程序的基本原则,以便可以使用Kubernetes实现自动化。
可预测需求模式解释了为什么每个容器都需要声明应用程序资源需求和运行时依赖项。通过定义这些需求,Kubernetes可以在您的集群.
使用这些模式可以定义的示例包括运行时依赖关系、资源配置文件、pod优先级和项目资源。
示例:资源配置文件
您需要以请求和限制的形式指定容器的资源需求,例如CPU和内存。请求是指所需的最小资源量,而限制是指容器可以消耗的最大资源量。
调度程序在将pods放置到节点时使用请求量。调度程序只会将一个pod调度到一个有足够容量容纳它的节点
如果未设置资源需求,则容器将被视为优先级较低的容器,如果节点耗尽可用资源,则首先终止容器。
配置模式
所有应用程序都需要配置,尽管在源代码中存储配置是一个简单的选择,但它并没有给您在不重新创建应用程序映像的情况下调整配置的灵活性。外部配置允许您根据环境进行调整。
配置模式将帮助您使用外部配置定制和调整应用程序,以适应不同的开发、集成和生产环境。
示例:EnVar配置
EnVar配置模式最适合于配置变量的小集合,其中可以使用普遍支持的环境变量来外部化配置。
与需要重建应用程序的硬编码配置相比,将应用程序的配置外部化可以使您在构建应用程序后更改配置。
使用环境变量外部化配置很好,因为任何操作系统都可以定义这些变量,并且任何编程语言都可以访问这些变量。
对于环境变量,硬编码的默认值通常在构建期间定义,然后在运行时覆盖。
在Kubernetes中,可以直接在控制器的pod规范中设置变量,如部署或副本集。您可以将值直接附加到环境变量,环境变量可以与pod定义分开管理。
您还可以使用Kubernetes Secrets(用于敏感数据)和ConfigMaps(用于非敏感配置)的委托。
高级模式
这些模式包括复杂的主题和最新的模式实现。控制器、操作员、弹性秤和图像生成器模式都是高级Kubernetes模式的示例。
示例:弹性秤
弹性伸缩模式用于通过调整pod副本的数量来水平扩展应用程序,通过调整pods的资源需求来垂直扩展应用程序;并且可以通过更改集群节点的数量来扩展集群本身。
尽管您可以手动处理缩放,但弹性缩放模式允许Kubernetes根据负载自动缩放。
使用Kubernetes,您可以更改容器的资源、服务所需的副本或集群中的节点数。它还可以监视与外部负载和容量相关的事件,分析容器状态,并扩展所需的性能。
水平吊舱自动缩放允许您定义一个不固定的应用程序容量,但它有足够的容量来处理不同的负载。水平吊舱自动缩放器用于缩放吊舱。
为了使用水平吊舱自动缩放器,需要启用度量服务器(资源使用数据的集群范围聚合器),并且需要定义CPU资源限制。您可以从命令行创建水平吊舱自动缩放器的定义。
水平吊舱自动缩放控制器根据您在命令行中设置的先前确定的定义,不断检索与缩放相关的吊舱的度量。
它还根据当前值和所需值计算所需的副本数,并更改声明的副本以保持新的所需状态