以下是一个详细的示例,展示如何使用 Kubernetes 的 Horizontal Pod Autoscaler (HPA) 来根据 CPU 使用率自动调整 Pod 的副本数。

  1. 创建 Deployment:
    首先,创建一个 Deployment 对象,定义应用程序的容器和资源需求。
kubectl create deployment example-deployment --image=example/image:latest --replicas=3 --requests=cpu=200m --limits=cpu=500m

上述命令创建了一个名为 “example-deployment” 的 Deployment,使用镜像 “example/image:latest”,并设置了资源请求和限制。

  1. 创建 Horizontal Pod Autoscaler (HPA):
    接下来,创建一个 HorizontalPodAutoscaler 对象,定义 Pod 的自动水平扩展规则。
kubectl autoscale deployment example-deployment --cpu-percent=50 --min=1 --max=10

上述命令使用 kubectl autoscale 命令创建了一个 HPA 对象,将其与 Deployment “example-deployment” 关联。设置了 CPU 使用率的百分比目标为 50%,最小副本数为 1,最大副本数为 10。

  1. 查看 HPA 状态:
    使用以下命令来监视 HPA 的状态和自动扩展情况:
kubectl get hpa
kubectl describe hpa example-deployment

第一个命令用于获取 HPA 的当前状态,包括副本数、目标和触发条件。第二个命令则提供了更详细的描述信息。

  1. 测试自动扩展:
    模拟负载来触发自动扩展。可以使用工具如 heyab 或自定义脚本来发送请求到应用程序,以增加 CPU 使用率。
kubectl run -it --rm load-generator --image=busybox /bin/sh
while true; do wget -q -O- http://example-deployment; done

上述命令创建一个临时的 Pod,使用 BusyBox 镜像,并发送持续的请求到应用程序。这将增加 CPU 使用率,触发自动扩展操作。

  1. 监视 Pod 和副本数:
    使用以下命令来查看 Pod 和副本数的变化:
kubectl get pods
kubectl get deployment example-deployment

通过这些命令,你可以查看 Pod 的状态和副本数的变化,以验证自动扩展操作是否成功。