arrow_back

优化 Google Kubernetes Engine 的费用:实验室挑战赛

登录 加入
Quick tip: Review the prerequisites before you run the lab
Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the student account, which may cause extra charges incurred to your personal account.
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

优化 Google Kubernetes Engine 的费用:实验室挑战赛

实验 1 小时 30 分钟 universal_currency_alt 5 个积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

GSP343

简介

在实验室挑战赛中,我们会为您提供一个场景和一系列任务。您将使用从课程的各个实验中学到的技能自行确定如何完成这些任务,而不是按照分步说明进行操作。自动评分系统(显示在本页面中)会提供有关您是否已正确完成任务的反馈。

在您参加实验室挑战赛期间,我们不会再教授新的 Google Cloud 概念知识。您需要拓展所学的技能,例如通过更改默认值和查看并研究错误消息来更正您自己所犯的错误。

要想获得满分,您必须在该时间段内成功完成所有任务!

我们仅建议已报名学习优化 Google Kubernetes Engine 的费用课程的学员参加此实验室挑战赛。准备好接受挑战了吗?

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。

挑战场景

您是团队中负责 Google Kubernetes Engine 的管理员,主要任务是管理网店 OnlineBoutique

您准备将团队的网站部署到 Google Kubernetes Engine,但仍然在想方设法来尽可能地缩减费用和提升性能。

您负责将 OnlineBoutique 应用部署到 GKE,并进行一些建议的配置更改以优化费用。

下面是您在部署时需要遵循的一些准则:

  • 可用区中创建集群。
  • 命名方案为 team-resource-number,例如可以将集群命名为
  • 对于初始集群,从机器大小 e2-standard-2 (2 vCPU, 8G memory) 开始。
  • 将集群设置为使用快速 release-channel

任务 1. 创建集群并部署应用

  1. 部署应用之前,您需要在 可用区中创建一个集群,并将其命名为

  2. 先从小规模着手,创建一个只含两 (2) 个节点的可用区级集群。

  3. 部署网店之前,务必根据 devprod 两种环境设置一些命名空间,以便分隔集群上的资源。

  4. 然后,使用下面的命令将应用部署到 dev 命名空间:

git clone https://github.com/GoogleCloudPlatform/microservices-demo.git && cd microservices-demo && kubectl apply -f ./release/kubernetes-manifests.yaml --namespace dev

点击检查我的进度,验证已完成以下目标: 创建 集群并部署应用

任务 2. 迁移到经优化的节点池

  1. 将应用成功部署到 dev 命名空间后,查看一下节点详情:

您得出的结论是,应该对该集群的节点池进行一些更改:

  • 当前部署中仍留有足够的 RAM,因此您应该可以与提供较少 RAM 的机器共用一个节点池。
  • 在大多数部署中,您考虑增加副本数量时,每增加一个 Pod 只需要 100 mCPU。如果您将节点池配置为使用较小的机器,则也可以使用总 CPU 较少的节点池。但您还要考虑需要对多少部署进行扩缩以及扩缩的程度如何。
  1. 创建一个名为 的节点池,并将 custom-2-3584 指定为机器类型。

  2. 节点数量设置为 2

  3. 设置好新节点池之后,封锁并排空 default-pool,以将您的应用部署迁移到新的节点池。

  4. 安全迁移部署之后,删除 default-pool。

点击检查我的进度,验证已完成以下目标: 迁移到经优化的节点池

任务 3. 应用前端更新

您刚刚完成了应用的所有部署工作,现在开发团队希望您在即将发布前推送最后的更新!没问题。您知道不需要停机就能做到这一点。

  1. 前端部署设置 Pod 中断预算。

  2. 将其命名为 onlineboutique-frontend-pdb

  3. 将部署的 min-availability 设置为 1

现在,您可以应用团队更新了。他们更改了用于首页横幅的文件,并向您提供了更新后的 Docker 映像:

gcr.io/qwiklabs-resources/onlineboutique-frontend:v2.1
  1. 修改您的前端部署,将其映像更改为更新后的映像。

  2. 修改部署时,将 ImagePullPolicy 更改为始终

点击检查我的进度,验证已完成以下目标: 应用前端更新

任务 4. 根据估算流量自动扩缩

公司即将举行营销活动,这会导致 OnlineBoutique 网店的流量激增。正常情况下,您会提前启动额外的资源来应对估算的流量高峰。但是,如若流量高峰远超原本的预期,您可能就需要紧急启动更多资源来应对额外的负载。

您还希望避免不必要地长时间投入额外的资源。为了缩减费用并减少可能的麻烦,您可以对 Kubernetes 部署进行配置,使其在负载开始骤增时自动进行扩缩。

  1. 对您的前端部署应用 Pod 横向自动扩缩,以应对流量激增的情形。

  2. 根据目标 CPU 利用率百分比 (50%) 进行扩缩。

  3. 将 Pod 扩缩范围设置为 1 个(下限)到 个(上限)之间。

毫无疑问,您希望在部署进行扩缩时不会停机,以免给用户带来不好的体验。

  1. 为确保在不停机的情况下进行扩缩操作,可以将部署设置为在目标 CPU 利用率百分比达到 50% 时进行扩缩。这样在自动扩缩过程中,应该就会留有足够的空间来处理负载。

  2. 将部署设置为在 1 个 Pod(下限)到 个 Pod(上限)之间扩缩。

但如果流量高峰超出您当前配置的计算资源的处理能力,该怎么办?您可能需要增加额外的计算节点。

  1. 下一步,确保您的集群在必要时能够自动启动额外的计算节点。然而,在使用自动扩缩功能时,您要处理的不仅仅只有扩容。

  2. 您要提前考虑应该配置的节点数量下限和上限。这样,当流量升高时,集群就可以增加节点;而当流量降低时,集群就可以减少节点数量。

  3. 更新您的集群自动扩缩器,使其在 1 个节点(下限)6 个节点(上限)之间进行扩缩。

点击检查我的进度,验证已完成以下目标: 根据估算流量自动扩缩

  1. 最后,运行一个负载测试来模拟流量激增的情形。

幸运的是,OnlineBoutique 在设计时内置了负载生成功能。现在,开发实例正在模拟网店流量(约有 10 个用户同时访问网店)。

  1. 为了更好地复制预计此活动将带来的流量,使用下面的命令通过 loadgenerator Pod 运行负载生成,并增加并发用户数。将 YOUR_FRONTEND_EXTERNAL_IP 替换为 frontend-external 服务的 IP 地址:
kubectl exec $(kubectl get pod --namespace=dev | grep 'loadgenerator' | cut -f1 -d ' ') -it --namespace=dev -- bash -c 'export USERS=8000; locust --host="http://YOUR_FRONTEND_EXTERNAL_IP" --headless -u "8000" 2>&1'
  1. 现在,观察您的工作负载并监控集群如何处理流量高峰。

您应该会看到您的 recommendationservice 崩溃了,或者至少很难满足急剧增加的需求。

  1. 对您的 recommendationservice 部署应用 Pod 横向自动扩缩。根据目标 CPU 利用率百分比 (50%) 进行扩缩,并将 Pod 扩缩范围设置为 1 个(下限)到 5 个(上限)之间。
注意:负载测试中的扩缩以及配置任何新节点的过程总共需要几分钟的时间。

任务 5. (可选)优化其他服务

虽然对前端服务应用 Pod 横向自动扩缩可以确保您的应用在负载测试过程中正常运行,但如果您监控其他工作负载的话,就会发现有些工作负载正在大量争用某些资源。

如果您在完成本实验前面的内容后还有剩余的时间,可以检查一下其他工作负载,并尝试通过自动扩缩来针对适当的资源指标来优化它们。

您还可以试试能否通过节点自动预配来进一步优化资源利用率。

恭喜!

恭喜!在本实验中,您已经将 OnlineBoutique 应用成功地部署到了 Google Kubernetes Engine,并进行了一些建议的配置更改以优化费用。您还对前端部署和 recommendationservice 部署应用了 Pod 横向自动扩缩,以应对流量激增的情形。此外,您还通过自动扩缩来针对适当的资源指标优化了其他服务。

赢得您的下一个技能徽章

本自学实验是优化 Google Kubernetes Engine 的费用技能徽章课程的组成部分。完成此技能徽章课程可赢得上面的徽章,以表彰您取得的成就。您可以在简历和社交平台中分享自己的徽章,并使用 #GoogleCloudBadge 让大家知道您取得的这一成就。

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 4 月 29 日

上次测试实验的时间:2024 年 4 月 29 日

版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.