如何基于 CPU 利用率自动扩展 Kubernetes 部署

KubernetesKubernetesBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Kubernetes 是一个强大的容器编排平台,它提供了强大的自动缩放功能,可根据需求动态调整应用程序的资源。在本教程中,我们将探讨如何基于 CPU 利用率配置和自动化 Kubernetes 部署缩放,确保你的应用程序始终拥有处理波动工作负载所需的资源。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedDeploymentGroup(["Advanced Deployment"]) kubernetes(("Kubernetes")) -.-> kubernetes/CoreConceptsGroup(["Core Concepts"]) kubernetes(("Kubernetes")) -.-> kubernetes/ClusterInformationGroup(["Cluster Information"]) kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/AdvancedDeploymentGroup -.-> kubernetes/rollout("Rollout") kubernetes/AdvancedDeploymentGroup -.-> kubernetes/scale("Scale") kubernetes/CoreConceptsGroup -.-> kubernetes/architecture("Architecture") kubernetes/ClusterInformationGroup -.-> kubernetes/cluster_info("Cluster Info") subgraph Lab Skills kubernetes/apply -.-> lab-415479{{"如何基于 CPU 利用率自动扩展 Kubernetes 部署"}} kubernetes/rollout -.-> lab-415479{{"如何基于 CPU 利用率自动扩展 Kubernetes 部署"}} kubernetes/scale -.-> lab-415479{{"如何基于 CPU 利用率自动扩展 Kubernetes 部署"}} kubernetes/architecture -.-> lab-415479{{"如何基于 CPU 利用率自动扩展 Kubernetes 部署"}} kubernetes/cluster_info -.-> lab-415479{{"如何基于 CPU 利用率自动扩展 Kubernetes 部署"}} end

理解 Kubernetes 自动缩放

Kubernetes 是一个强大的容器编排系统,它提供自动缩放功能来管理应用程序的资源利用率。Kubernetes 的关键特性之一是能够根据各种指标(包括 CPU 利用率)自动缩放部署。

什么是 Kubernetes 自动缩放?

Kubernetes 自动缩放是一项功能,它允许 Kubernetes 根据预定义的缩放策略自动调整部署的副本(实例)数量。这可确保你的应用程序能够通过动态增加或减少运行实例的数量来应对流量或资源需求的波动。

Kubernetes 自动缩放机制

Kubernetes 提供了两种主要的自动缩放机制:

  1. 水平 Pod 自动缩放器(Horizontal Pod Autoscaler,HPA):HPA 根据观察到的 CPU 利用率或其他自定义指标自动缩放部署中的 Pod(容器)数量。
  2. 垂直 Pod 自动缩放器(Vertical Pod Autoscaler,VPA):VPA 根据观察到的容器使用情况自动调整容器的 CPU 和内存请求及限制。

在本教程中,我们将重点关注水平 Pod 自动缩放器(HPA)以及如何配置它以根据 CPU 利用率缩放部署。

Kubernetes 自动缩放的好处

实施 Kubernetes 自动缩放有以下几个好处:

  • 高效的资源利用:根据资源使用情况自动缩放部署可确保你的应用程序能够应对流量或资源需求的波动,而不会过度配置或配置不足资源。
  • 成本优化:通过动态缩放部署,你可以仅在任何给定时间使用所需的资源,从而降低运行应用程序的总体成本。
  • 提高可用性:自动缩放通过自动调整运行实例的数量以满足当前需求,有助于维持应用程序所需的性能和可用性。
  • 减少人工干预:Kubernetes 自动缩放消除了手动缩放部署的需求,使你的应用程序更具弹性且更易于管理。

配置基于 CPU 的自动缩放

启用水平 Pod 自动缩放器(HPA)

要在 Kubernetes 中启用基于 CPU 的自动缩放,你需要配置水平 Pod 自动缩放器(HPA)。HPA 会监控你的部署的资源利用率,并根据定义的缩放策略自动缩放 Pod 的数量。

以下是使用 Kubernetes 命令行界面(kubectl)配置 HPA 的示例:

kubectl autoscale deployment my-deployment --cpu-percent=50 --min=2 --max=10

此命令为 my-deployment 部署创建一个 HPA,将目标 CPU 利用率设置为 50%,最小副本数设置为 2,最大副本数设置为 10。

定义缩放策略

HPA 使用以下参数来确定何时缩放你的部署:

  • 目标 CPU 利用率:部署中所有 Pod 的期望平均 CPU 利用率。
  • 最小副本数:要维持的最小副本数。
  • 最大副本数:要扩展到的最大副本数。

你可以根据应用程序的要求和资源限制调整这些参数。

监控自动缩放活动

要监控自动缩放活动,你可以使用以下 Kubernetes 命令:

## 获取当前的 HPA 配置
kubectl get hpa

## 查看自动缩放事件
kubectl describe hpa my-deployment

输出将显示当前的副本数、目标 CPU 利用率以及发生的任何缩放事件。

自动缩放注意事项

在配置基于 CPU 的自动缩放时,请牢记以下注意事项:

  • 资源请求和限制:确保你的部署的容器设置了适当的 CPU 请求和限制,以确保准确的自动缩放。
  • 指标服务器:Kubernetes 需要安装并配置指标服务器组件,以便为 HPA 提供 CPU 和内存利用率数据。
  • 缩放阈值:根据应用程序的性能要求和资源限制选择适当的缩放阈值(目标 CPU 利用率、最小和最大副本数)。
  • 监控和警报:设置监控和警报以跟踪自动缩放活动,并确保你的应用程序按预期进行缩放。

通过遵循这些指南,你可以有效地为你的 Kubernetes 部署配置基于 CPU 的自动缩放。

自动化 Kubernetes 部署缩放

将自动缩放集成到你的部署工作流程中

通过将水平 Pod 自动缩放器(HPA)纳入应用程序的部署工作流程,可以实现 Kubernetes 部署缩放的自动化。这可确保你的应用程序能够动态缩放以满足不断变化的需求,而无需人工干预。

在 Kubernetes 清单中定义自动缩放

你可以直接在 Kubernetes 部署清单中定义 HPA 配置。这使你能够与应用程序部署一起进行版本控制和管理自动缩放设置。

以下是 Kubernetes 部署和 HPA 定义的示例:

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-container
          image: my-app:v1
          resources:
            requests:
              cpu: 100m
            limits:
              cpu: 500m
---
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: my-deployment-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-deployment
  minReplicas: 2
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        targetAverageUtilization: 50

在此示例中,部署定义了初始副本数,而 HPA 配置指定了自动缩放参数,包括目标 CPU 利用率、最小和最大副本数。

自动化部署更新

为了完全自动化 Kubernetes 部署的缩放,你可以将 HPA 配置集成到应用程序的持续集成和持续部署(CI/CD)管道中。这可确保对部署所做的任何更改(包括缩放策略)都会自动应用并进行测试。

通过将自动缩放纳入你的部署工作流程,你可以确保 Kubernetes 应用程序能够动态缩放以满足不断变化的需求,从而提高应用程序的整体可用性和性能。

LabEx 自动缩放解决方案

LabEx 提供一系列 Kubernetes 自动缩放解决方案,以帮助你优化应用程序的资源利用率和可扩展性。我们的专家可以协助你设计、实施和管理针对你特定需求的有效自动缩放策略。

总结

在本教程结束时,你将全面了解 Kubernetes 自动缩放以及如何利用它根据 CPU 利用率自动缩放你的部署。这将帮助你优化资源使用、提高应用程序性能,并确保由 Kubernetes 驱动的应用程序能够无缝处理各种工作负载。