选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用 Vertical Pod Autoscaler 调整容器组(pod)资源

聚焦模式
使用 Vertical Pod Autoscaler 调整容器组(pod)资源 - Amazon EKS

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

Kubernetes Vertical Pod Autoscaler 为容器组(pod)自动调整 CPU 和内存预留,帮助实现“合适规模”的应用程序。此调整可以帮助提高集群资源利用率,释放 CPU 和内存供其他容器组(pod)使用。本主题可帮助您将 Vertical Pod Autoscaler 部署到集群并验证它在正常工作。

部署 Vertical Pod Autoscaler

在此部分中,您将部署 Vertical Pod Autoscaler 到集群。

  1. 打开终端窗口,导航到您要下载 Vertical Pod Autoscaler 源代码的目录。

  2. 克隆 kubernetes/autoscaler GitHub 存储库。

    git clone https://github.com/kubernetes/autoscaler.git
  3. 切换到 vertical-pod-autoscaler 目录。

    cd autoscaler/vertical-pod-autoscaler/
  4. (可选)如果您已经部署另一个版本的 Vertical Pod Autoscaler,请使用以下命令将其删除。

    ./hack/vpa-down.sh
  5. 如果您的节点无权访问 registry.k8s.io 容器注册表,则您需要提取下面的映像并将它们推送到自己的私有存储库。有关如何提取镜像并将它们推送到您自己的私有存储库的更多信息,请参阅 将容器镜像从一个存储库复制到另一个存储库

    registry.k8s.io/autoscaling/vpa-admission-controller:0.10.0 registry.k8s.io/autoscaling/vpa-recommender:0.10.0 registry.k8s.io/autoscaling/vpa-updater:0.10.0

    如果要将映像推送到私有 Amazon ECR 存储库,请将清单中的 registry.k8s.io 替换为您的注册表。请将 111122223333 替换为您的账户 ID。将 region-code 替换为您的集群所在的 AWS 区域。以下命令假定您将存储库命名为与清单中的存储库名称相同。如果已将存储库命名为其它名称,则也需要进行更改。

    sed -i.bak -e 's/registry.k8s.io/111122223333.dkr.ecr.region-code.amazonaws.com/' ./deploy/admission-controller-deployment.yaml sed -i.bak -e 's/registry.k8s.io/111122223333.dkr.ecr.region-code.amazonaws.com/' ./deploy/recommender-deployment.yaml sed -i.bak -e 's/registry.k8s.io/111122223333.dkr.ecr.region-code.amazonaws.com/' ./deploy/updater-deployment.yaml
  6. 使用以下命令将 Vertical Pod Autoscaler 部署到您的集群。

    ./hack/vpa-up.sh
  7. 验证已成功创建 Vertical Pod Autoscaler 容器组(pod)。

    kubectl get pods -n kube-system

    示例输出如下。

    NAME READY STATUS RESTARTS AGE [...] metrics-server-8459fc497-kfj8w 1/1 Running 0 83m vpa-admission-controller-68c748777d-ppspd 1/1 Running 0 7s vpa-recommender-6fc8c67d85-gljpl 1/1 Running 0 8s vpa-updater-786b96955c-bgp9d 1/1 Running 0 8s

测试 Vertical Pod Autoscaler 安装

在此部分中,您部署示例应用程序以验证 Vertical Pod Autoscaler 在正常运行。

  1. 使用以下命令部署 hamster.yaml Vertical Pod Autoscaler 示例。

    kubectl apply -f examples/hamster.yaml
  2. hamster 示例应用程序获取容器组(pod)。

    kubectl get pods -l app=hamster

    示例输出如下。

    hamster-c7d89d6db-rglf5 1/1 Running 0 48s hamster-c7d89d6db-znvz5 1/1 Running 0 48s
  3. 描述其中一个容器组(pod),查看其 cpumemory 预留。请将 c7d89d6db-rglf5 替换为上一步输出中返回的 ID 之一。

    kubectl describe pod hamster-c7d89d6db-rglf5

    示例输出如下。

    [...] Containers: hamster: Container ID: docker://e76c2413fc720ac395c33b64588c82094fc8e5d590e373d5f818f3978f577e24 Image: registry.k8s.io/ubuntu-slim:0.1 Image ID: docker-pullable://registry.k8s.io/ubuntu-slim@sha256:b6f8c3885f5880a4f1a7cf717c07242eb4858fdd5a84b5ffe35b1cf680ea17b1 Port: <none> Host Port: <none> Command: /bin/sh Args: -c while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done State: Running Started: Fri, 27 Sep 2019 10:35:16 -0700 Ready: True Restart Count: 0 Requests: cpu: 100m memory: 50Mi [...]

    您可以看到原始容器组(pod)预留了 100 millicpu 的 CPU 和 50 MiB 内存。对于本示例应用程序,100 millicpu 小于容器组(pod)运行所需的数量,因此 CPU 受限。它预留的内存也远小于所需的数量。Vertical Pod Autoscaler vpa-recommender 部署会分析 hamster 容器组(pod),查看 CPU 和内存需求是否合适。如果需要调整,vpa-updater 使用更新后的值重新启动容器组(pod)。

  4. 等待 vpa-updater 启动新 hamster 容器组(pod)。这大概需要一两分钟。您可以使用以下命令监控容器组(pod)。

    注意

    如果不确定是否启动了新容器组(pod),请将容器组名称与您之前的列表比较。新容器组(pod)启动时,您会看到新容器组(pod)名称。

    kubectl get --watch Pods -l app=hamster
  5. 当新 hamster 容器组(pod)启动时,对其进行描述,查看更新后的 CPU 和内存预留。

    kubectl describe pod hamster-c7d89d6db-jxgfv

    示例输出如下。

    [...] Containers: hamster: Container ID: docker://2c3e7b6fb7ce0d8c86444334df654af6fb3fc88aad4c5d710eac3b1e7c58f7db Image: registry.k8s.io/ubuntu-slim:0.1 Image ID: docker-pullable://registry.k8s.io/ubuntu-slim@sha256:b6f8c3885f5880a4f1a7cf717c07242eb4858fdd5a84b5ffe35b1cf680ea17b1 Port: <none> Host Port: <none> Command: /bin/sh Args: -c while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done State: Running Started: Fri, 27 Sep 2019 10:37:08 -0700 Ready: True Restart Count: 0 Requests: cpu: 587m memory: 262144k [...]

    在之前的输出中,您可以看到 cpu 预留提升到了 587 个 millicpu,这是原始值的五倍多。memory 提高到了 262144 KB,即大约 250 MB,也就是原始值的五倍。此容器组(pod)资源不足,Vertical Pod Autoscaler 使用更为合适的值纠正了估计值。

  6. 描述 hamster-vpa 资源以查看新的建议。

    kubectl describe vpa/hamster-vpa

    示例输出如下。

    Name: hamster-vpa Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"autoscaling.k8s.io/v1beta2","kind":"VerticalPodAutoscaler","metadata":{"annotations":{},"name":"hamster-vpa","namespace":"d... API Version: autoscaling.k8s.io/v1beta2 Kind: VerticalPodAutoscaler Metadata: Creation Timestamp: 2019-09-27T18:22:51Z Generation: 23 Resource Version: 14411 Self Link: /apis/autoscaling.k8s.io/v1beta2/namespaces/default/verticalpodautoscalers/hamster-vpa UID: d0d85fb9-e153-11e9-ae53-0205785d75b0 Spec: Target Ref: API Version: apps/v1 Kind: Deployment Name: hamster Status: Conditions: Last Transition Time: 2019-09-27T18:23:28Z Status: True Type: RecommendationProvided Recommendation: Container Recommendations: Container Name: hamster Lower Bound: Cpu: 550m Memory: 262144k Target: Cpu: 587m Memory: 262144k Uncapped Target: Cpu: 587m Memory: 262144k Upper Bound: Cpu: 21147m Memory: 387863636 Events: <none>
  7. 在完成对示例应用程序的试验后,使用以下命令可将其删除。

    kubectl delete -f examples/hamster.yaml

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。