Logo
Section 1 / 8

简介

本课重点介绍本章内容。

导入

简介

本课重点介绍本章内容。

变化是所有存在的基本过程。

——斯波克

Kubernetes 系统

到现在为止,你可能已经理解了基于 Kubernetes 的系统一个关键特点就是高度动态性。几乎没有什么是静态的。我们定义 Deployment 或 StatefulSet,Kubernetes 会将 Pod 分布到整个集群中。在大多数情况下,这些 Pod 很少会长时间停留在同一个位置。滚动更新会导致 Pod 被重新创建,并可能被移动到其他节点上。任何类型的故障都会引发受影响资源的重新调度。还有许多其他事件也会导致 Pod 在集群中不断迁移。一个 Kubernetes 集群就像一个蜂巢,充满生机,始终处于运动之中。

Kubernetes 的动态特性

Kubernetes 集群的动态特性不仅源于我们的(人类)操作或因故障引发的重新调度,自动伸缩机制也起到了重要作用。我们应该充分接纳 Kubernetes 的动态特性,朝着自治且自给自足的集群迈进,使集群能够自主满足应用程序的需求,而无需(大量)人工干预。为了实现这一点,我们需要提供足够的信息,让 Kubernetes 能够根据需要自动扩展应用以及构成集群的节点。在本章中,我们将重点讨论前者:探索基于内存和 CPU 使用情况自动扩展 Pod 的常用且基础方法。我们将通过 HorizontalPodAutoscaler 来实现这一目标。

HorizontalPodAutoscaler 的唯一功能是自动扩展 Deployment、StatefulSet 或其他少数资源类型中的 Pod 数量。它通过监控 Pod 的 CPU 和内存使用情况,在指标达到预设阈值时采取相应行动。

HorizontalPodAutoscaler 作为一个 Kubernetes API 资源和控制器实现。该资源定义了控制器的行为。控制器会周期性地调整 StatefulSet 或 Deployment 中的副本数量,使其平均 CPU 利用率与用户指定的目标值相匹配。

我们很快就会看到 HorizontalPodAutoscaler 的实际运行效果,并通过具体示例分析其各项特性。但在那之前,我们需要一个 Kubernetes 集群以及用于收集指标的数据源。


在下一课中,我们将创建一个集群,并开始进行 Deployment 和 StatefulSet 的自动伸缩配置。

开始之前

创建一个集群