Install Cloud Service Mesh

检查我的进度

/ 50

Deploying a BookInfo application

检查我的进度

/ 50

此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP654

Google Cloud 自学实验

概览

Istio 是一个开源框架,用于连接、管理微服务,并为微服务提供安全保护。它可以与任何服务搭配使用,包括但不限于托管在 Kubernetes 集群中的服务。Istio 能够让您为已部署的服务构建起一套网络体系,实现负载均衡、服务间身份验证、监控等功能,而且无需对服务代码进行任何更改。

举例来说,在可靠的分布式系统中,系统通常需要在请求失败后进行重试,并可能需要配合指数退避算法来增加延迟。Java、Golang 和 NodeJS 都有可以实现这些功能的库。不过,在应用代码层面引入这些库,意味着每个不同的应用都必须各自独立地去解决这一问题。Istio 边车可以自动为应用实现这些功能。

Cloud Service Mesh

Cloud Service Mesh (ASM) 由 Istio 提供支持。借助 Cloud Service Mesh,您可以获得经过企业级测试且完全受支持的 Istio 发行版,让您能够利用 GKE Enterprise 创建和部署服务网格,无论您的集群是在 Google Cloud 中运行还是在本地运行。

您可以使用内置的配置文件,其中包含针对 Google Kubernetes Engine 或 GKE on Bare Metal 量身定制的推荐设置。

最后,Cloud Service Mesh 还提供了一系列附加功能和工具,助您以统一的方式观察并管理安全、可靠的服务:

  • 网格 GKE 集群内 HTTP(S) 流量的服务指标和日志会自动注入 Google Cloud。
  • 预配置的服务信息中心可为您提供了解服务所需的信息。
  • 借助深度遥测数据,您可以深入了解各项指标和日志,并按各种特性过滤和划分数据。
  • 服务间关系一目了然,助您洞悉谁在连接各项服务,以及每项服务背后的依赖关系。
  • 服务等级目标 (SLO) 可助您洞察各项服务的运行状况。您可以轻松定义 SLO,并根据您自己设定的服务运行状况标准接收提醒。

要在 GKE Enterprise 集群上实现基于 Istio 的服务网格,最简单、功能最丰富的方式莫过于 Cloud Service Mesh。

在本实验中,您将在 GKE 集群上安装 Cloud Service Mesh。

学习内容

在本实验中,您将学习如何执行以下任务:

  • 在 Google Kubernetes Engine (GKE) 上预配集群
  • 安装并配置 Cloud Service Mesh
  • 部署 Bookinfo,这是一个由 Istio 支持的多服务应用
  • 通过 Istio Ingress Gateway 启用外部访问
  • 使用 Bookinfo 应用
  • 借助 Cloud Service Mesh 信息中心来监控服务性能

设置和要求

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

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

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

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。右侧是实验设置和访问权限面板,其中包含以下内容:

    • 打开 Google Cloud 控制台按钮
    • 您在本实验中必须使用的临时凭证(用户名和密码)
    • 帮助您逐步完成该实验所需的其他信息(如果需要)

    请注意,实验计时器位于页面顶部附近,将显示剩余时间。

  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:可以将这些标签页分别放在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号。
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验设置和访问权限面板中找到“用户名”。

  4. 点击下一步。

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验设置和访问权限面板中找到“密码”。

  6. 点击下一步。

    重要提示:您必须使用实验提供的凭证。请勿使用您的 Google Cloud 账号凭证。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 依次点击进入后续页面:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重身份验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标。

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 Cloud Shell 信息窗口中的设置。
    • 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。

如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID:

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权。

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南。

任务 1. 设置项目

验证 SDK 配置

  1. 在 Cloud Shell 中,验证是否已配置默认账号。

    验证 Cloud SDK 是否已配置为使用 Qwiklabs 生成的用户账号。

    gcloud config list

    输出:

    [component_manager] disable_update_check = True [compute] gce_metadata_read_timeout_sec = 5 [core] account = student-xx-xxxx@qwiklabs.net disable_usage_reporting = False project = qwiklabs-gcp-yy-#### [metrics] environment = devshell Your active configuration is: [cloudshell-#####]
  2. 根据需要更新项目配置。

    如果 SDK 的默认项目设置不正确,请更新配置。将 [project_id] 替换为 Qwiklabs 说明页面凭证部分中提供的项目名称:

    gcloud config set project [project_id]

配置环境变量

  1. 配置将在设置和安装命令中使用的环境变量:
export PROJECT_ID=$(gcloud config get-value project) export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} \ --format="value(projectNumber)") export CLUSTER_NAME=central export CLUSTER_ZONE={{{project_0.default_zone | zone}}} export WORKLOAD_POOL=${PROJECT_ID}.svc.id.goog export MESH_ID="proj-${PROJECT_NUMBER}" 注意:
  • WORKLOAD_POOL 将用于启用 Workload Identity,这是从 GKE 应用安全访问 Google Cloud 服务的推荐方法。
  • MESH_ID 将用于在集群上设置 mesh_id 标签。只有设置了该标签,Cloud 控制台中的 Cloud Service Mesh 信息中心才能正常显示各项指标。

验证是否有足够权限

  • 在 Cloud Shell 中,验证您的用户账号是否已分配所有者角色:
gcloud projects get-iam-policy $PROJECT_ID \ --flatten="bindings[].members" \ --filter="bindings.members:user:$(gcloud config get-value core/account 2>/dev/null)"

输出:

bindings: members: user:student-xx-xxxx@qwiklabs.net role: roles/owner ... 注意:您的学生用户还拥有查看者权限。 注意:要完成设置,您需要拥有与以下角色关联的权限:
  • Project Editor
  • Kubernetes Engine Admin
  • Project IAM Admin
  • GKE Hub Admin
  • Service Account Admin
  • Service Account key Admin
如果您具有 Owner 角色,即拥有所有这些权限及其他权限,因此可以继续操作。

任务 2. 设置 GKE 集群

创建集群

  1. 在 Cloud Shell 中运行以下命令,创建 Kubernetes 集群 central:
gcloud config set compute/zone ${CLUSTER_ZONE} gcloud container clusters create ${CLUSTER_NAME} \ --machine-type=e2-standard-4 \ --num-nodes=4 \ --subnetwork=default \ --release-channel=regular \ --labels mesh_id=${MESH_ID} \ --workload-pool=${WORKLOAD_POOL} \ --logging=SYSTEM,WORKLOAD

输出:

NAME: central LOCATION: {{{project0.default_zone | zone}}} MASTER_VERSION: 1.35.3-gke.2190000 MASTER_IP: 35.245.2.147 MACHINE_TYPE: e2-standard-4 NODE_VERSION: 1.35.3-gke.2190000 NUM_NODES: 4 STATUS: RUNNING

集群创建可能需要几分钟时间才能完成。

  1. 集群创建完成后,执行以下命令序列,从而激活 fleet service mesh、配置管理员权限并设置 istio-system 命名空间。
gcloud container fleet mesh enable kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user=$(gcloud config get-value account) kubectl create namespace istio-system
  1. 将 kubectl 配置为指向该集群。
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --zone $CLUSTER_ZONE \ --project $PROJECT_ID

任务 3. 准备安装 Cloud Service Mesh

Google 提供了一个名为 asmcli 的工具,可用于安装或升级 Cloud Service Mesh。只要您授予相应权限,asmcli 就会按以下方式配置您的项目和集群:

  • 为您在 Google Cloud 项目中授予所需的 Identity and Access Management (IAM) 权限。
  • 在您的 Google Cloud 项目中启用所需的 Google API。
  • 为集群添加一个用于识别网格的标签。
  • 创建一个服务账号,让数据平面组件(例如边车代理)能够安全地访问您项目的数据和资源。
  • 如果集群尚未注册,请将其注册到舰队。

您将使用 asmcli 在集群上安装 Cloud Service Mesh。

  1. 将用于安装 Cloud Service Mesh 1.28 的版本下载到当前工作目录:
curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.28 > asmcli
  1. 为脚本授予可执行权限:
chmod +x asmcli
  1. 启用 Service Mesh API:
gcloud services enable mesh.googleapis.com

任务 4. 验证 Cloud Service Mesh

您可以运行 asmcli validate,以确保您的项目和集群已按安装 Cloud Service Mesh 的要求配置妥当。使用此选项时,asmcli 不会对您的项目或集群进行任何更改,也不会安装 Cloud Service Mesh。

asmcli 会验证以下内容:

  • 您的环境拥有所需的工具。
  • 集群符合最低要求。
  • 您拥有指定项目所需的权限。
  • 项目已启用所有必需的 Google API。
  1. 运行以下命令以验证配置并将安装文件和 asm 软件包下载到 OUTPUT_DIR 目录:
./asmcli validate \ --project_id $PROJECT_ID \ --cluster_name $CLUSTER_NAME \ --cluster_location $CLUSTER_ZONE \ --fleet_id $PROJECT_ID \ --output_dir ./asm_output 注意:请忽略任何验证错误。因为在此步骤中,验证的目的是确认集群是否具备安装 ASM 所需的所有组件,而非确认 ASM 是否已正确安装。

成功后,您应该会看到类似如下所示的输出:

asmcli: Setting up necessary files... asmcli: Using asm_kubeconfig as the kubeconfig... asmcli: Checking installation tool dependencies... asmcli: Fetching/writing GCP credentials to kubeconfig file... asmcli: Verifying connectivity (10s)... asmcli: kubeconfig set to asm_kubeconfig asmcli: using context gke_example-project-12345_us-west1_cluster-2 asmcli: Getting account information... asmcli: Downloading ASM.. asmcli: Downloading ASM kpt package... fetching package "/asm" from "https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages" to "asm" asmcli: Checking required APIs... asmcli: Checking for project example-project-12345... asmcli: Reading labels for us-west1/cluster-2... asmcli: Checking for istio-system namespace... asmcli: Confirming node pool requirements for example-project-12345/us-west1/cluster-2... asmcli: Checking Istio installations... asmcli: [WARNING]: There is no way to validate that the meshconfig API has been initialized. asmcli: [WARNING]: This needs to happen once per GCP project. If the API has not been initialized asmcli: [WARNING]: for example-project-12345, please re-run this tool with the --enable_gcp_components asmcli: [WARNING]: flag. Otherwise, installation will succeed but Cloud Service Mesh asmcli: [WARNING]: will not function correctly. asmcli: Successfully validated all requirements to install ASM. 注意:本实验将提供必要的标志来处理验证命令发出的警告。

任务 5. 安装 Cloud Service Mesh

以下命令将安装 Cloud Service Mesh。--enable_all 标志可让脚本启用所需的 Google API、设置 Identity and Access Management 权限,以及对集群进行所需更新,其中包括启用 GKE Workload Identity。

  1. 运行以下命令以安装 Cloud Service Mesh:
./asmcli install \ --project_id $PROJECT_ID \ --cluster_name $CLUSTER_NAME \ --cluster_location $CLUSTER_ZONE \ --fleet_id $PROJECT_ID \ --output_dir ./asm_output \ --enable_all \ --option legacy-default-ingressgateway \ --ca mesh_ca \ --enable_gcp_components

您将看到如下所示的输出:

asmcli: ***************************** asmcli: Successfully installed ASM.

点击检查我的进度以验证是否完成了以下目标: 安装 Cloud Service Mesh

安装入站流量网关

Cloud Service Mesh 让您可以灵活选择将网关作为服务网格的一部分进行部署和管理。网关是指运行在网格边缘的负载均衡器,负责接收传入或传出的 HTTP/TCP 连接。网关是 Envoy 代理,可让您精确控制进出网格的流量。

  1. 如果您还没有入站流量网关的命名空间,请先创建一个。网关属于用户工作负载,根据最佳实践,不应将其部署在控制平面命名空间中。
GATEWAY_NS=istio-gateway kubectl create namespace $GATEWAY_NS
  1. 通过为网关命名空间应用修订版本标签,即可在网关上启用自动注入功能。边车注入器 Webhook 会使用修订版本标签将注入的代理与特定控制平面修订版本相关联。

    • 使用以下命令在 istiod 上定位修订版本标签:
    kubectl get deploy -n istio-system -l app=istiod -o \ jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'
    • 将该值存储在环境变量中:
    REVISION=$(kubectl get deploy -n istio-system -l app=istiod -o \ jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    • 将修订版本标签应用于命名空间。在以下命令中,REVISION 是您在上一步中记下的 istiod 修订版本标签的值:
    kubectl label namespace $GATEWAY_NS \ istio.io/rev=$REVISION --overwrite
    • 启用 Istio 的代理注入
    kubectl label namespace default istio-injection=enabled kubectl label namespace $GATEWAY_NS istio-injection=enabled
  2. 切换到您在 --output_dir 中指定的目录:

cd ~/asm_output
  1. 您可以按原样部署位于 samples/gateways/istio-ingressgateway/ 目录中的示例入站流量网关配置,也可以根据需要对其进行修改:
kubectl apply -n $GATEWAY_NS \ -f samples/gateways/istio-ingressgateway

启用边车注入

Cloud Service Mesh 会使用边车代理来增强网络安全性、可靠性和可观测性。借助 Cloud Service Mesh,这些功能可以从应用的主容器中抽象出来,并在同一 Pod 中作为独立容器部署的通用进程外代理中实现。

  1. 在部署工作负载之前,请务必配置边车代理注入,以便 Cloud Service Mesh 可以监控和保护流量。

  2. 若要启用自动注入,请应用修订版本标签,并移除 istio-injection 标签(如果存在)。

  3. 在以下命令中,您需要指定要启用自动注入的命名空间 default,而 REVISION 则是您在上一步中记下的修订版本标签:

kubectl label namespace default istio-injection-istio.io/rev=$REVISION --overwrite 注意:您可以忽略输出中显示的 "istio-injection" not found 消息。这意味着该命名空间之前没有 istio-injection 标签,这在 Cloud Service Mesh 的新安装或新部署中属于正常现象。 注意:现在已为未来的工作负载启用了边车代理注入。

如果此集群此前已在运行工作负载,您则需要重启 Pod 才能重新触发自动注入。

任务 6. 部署 Bookinfo,这是一个由 Istio 支持的多服务应用

在此任务中,您将设置 Bookinfo 示例微服务应用,并探索该应用。

Bookinfo 概览

现在,ASM 已配置并验证完毕,您可以部署随安装提供的其中一个示例应用,即 BookInfo。这是一个简单的模拟书店应用,由四个全部使用 Istio 进行管理的微服务组成。每个微服务均由不同的语言编写而成,旨在演示如何在多语言环境中使用 Istio,而无需对代码进行任何更改。

这些微服务包括:

  • productpage:调用 details 和 reviews 微服务来填充页面。
  • details:包含图书信息。
  • reviews:包含书评。它还会调用 ratings 微服务。
  • ratings:包含图书排名信息,随书评一起显示。

reviews 微服务有 3 个版本:

  • Reviews v1 不会调用 ratings 服务。
  • Reviews v2 会调用 ratings 服务,并以 1 到 5 颗黑色星标显示评分。
  • Reviews v3 会调用 ratings 服务,并以 1 到 5 颗红色星标显示评分。

该应用的端到端架构如下所示:

Bookinfo 架构

您可以在 Istio 的 samples/bookinfo 目录中找到此示例中使用的源代码及所有其他文件。

部署 Bookinfo

  1. 查看描述 BookInfo 应用的 .yaml 文件:

    istio_dir=$(ls -d istio-* | tail -n 1) cd $istio_dir cat samples/bookinfo/platform/kube/bookinfo.yaml

    查找 containers 部分,确认 Bookinfo 应用中每个服务的每个版本在相应的部署中都包含一个容器。

  2. 在 Cloud Shell 中,使用以下命令在部署每个应用 Pod 的同时 inject 代理边车:

    kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml 注意:

    Istio 使用开源 Envoy 代理的扩展版本(这是一种用 C++ 编写的高性能代理),用以调解服务网格中所有服务的所有入站和出站流量。

    Istio 充分利用了 Envoy 的众多内置功能,包括动态服务发现、负载均衡、TLS 终结、HTTP/2 和 gRPC 代理、断路器、健康检查、基于百分比流量分配的分阶段发布、故障注入以及丰富的指标。

    输出:

    service/details created serviceaccount/bookinfo-details created deployment.apps/details-v1 created service/ratings created serviceaccount/bookinfo-ratings created deployment.apps/ratings-v1 created service/reviews created serviceaccount/bookinfo-reviews created deployment.apps/reviews-v1 created deployment.apps/reviews-v2 created deployment.apps/reviews-v3 created service/productpage created serviceaccount/bookinfo-productpage created deployment.apps/productpage-v1 created

点击检查我的进度以验证是否完成了以下目标: 部署 BookInfo 应用

通过 Istio Ingress Gateway 启用外部访问

现在 Bookinfo 服务已成功启动并运行,接下来您需要让该应用能够从 Kubernetes 集群外部(例如通过浏览器)进行访问。Istio 网关正是为此而设计的。

  1. 查看 .yaml 文件,其中描述了应用入站流量网关的配置:

    cat samples/bookinfo/networking/bookinfo-gateway.yaml

    在部署的资源中查找 Gateway 和 VirtualService 网格资源。Gateway 可将服务公开给服务网格之外的用户,并允许将监控和路由规则等 Istio 功能应用于进入集群的流量。

  2. 为应用配置入站流量网关,该网关会公开一个您稍后将用到的外部 IP:

    kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

    输出:

    gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created

验证 Bookinfo 部署

  1. 确认应用已正确部署,查看服务、Pod 和入站流量网关:

    kubectl get services

    输出:

    NAME TYPE ... details ClusterIP ... kubernetes ClusterIP ... productpage ClusterIP ... ratings ClusterIP ... reviews ClusterIP ...
  2. 查看正在运行的应用 Pod:

    kubectl get pods

    输出:

    NAME READY STATUS RESTARTS AGE details-v1-79f774bdb9-6l54w 2/2 Running 0 101s productpage-v1-6b746f74dc-4xccm 2/2 Running 0 100s ratings-v1-b6994bb9-7g4z2 2/2 Running 0 100s reviews-v1-545db77b95-hkh9p 2/2 Running 0 100s reviews-v2-7bf8c9648f-cmsxj 2/2 Running 0 100s reviews-v3-84779c7bbc-8b8qp 2/2 Running 0 100s

    您可能需要重新运行此命令,直到看到所有六个 Pod 都处于正在运行状态。

  3. 从集群中的某个 Pod(例如 ratings)向 Bookinfo 应用发送 curl 请求,确认该应用正在运行:

    kubectl exec -it $(kubectl get pod -l app=ratings \ -o jsonpath='{.items[0].metadata.name}') \ -c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"

    输出:

    简单的书店应用
  4. 确认入站流量网关已创建:

    kubectl get gateway

    输出:

    NAME AGE bookinfo-gateway 20m
  5. 获取入站流量网关的外部 IP 地址:

    kubectl get svc istio-ingressgateway -n istio-system

    输出:

    NAME TYPE ... EXTERNAL-IP ... istio-ingressgateway LoadBalancer ... 34.72.220.30 ...

    在此示例中,入站流量网关的外部 IP 为 34.72.220.30。

  6. 现在运行以下命令,并将 [EXTERNAL-IP] 替换为上一个命令输出的外部 IP:

    export GATEWAY_URL=[EXTERNAL-IP]
  7. 从集群外部向 Bookinfo 应用发送 curl 请求,检查该应用是否正在运行:

    curl -I http://${GATEWAY_URL}/productpage

    输出:

    HTTP/1.1 200 OK content-type: text/html; charset=utf-8 content-length: 4183 server: istio-envoy ...

任务 7. 使用 Bookinfo 应用

在网络浏览器中试用该应用

  1. 通过浏览器访问 http://[$GATEWAY_URL]/productpage 以查看 BookInfo 网页。记得将 [$GATEWAY_URL] 替换为您实际使用的外部 IP 地址。

    Bookinfo 产品页面

  2. 多刷新几次页面。

    请注意,您会看到三个不同版本的评价,这是因为我们尚未利用 Istio 来控制版本路由。

    系统会以轮循方式调用三种不同的图书评价服务:

    • 无星标
    • 黑色星标
    • 红色星标

    在三者之间随机切换是正常的 Kubernetes 路由/负载均衡行为。

生成稳定的后台负载

运行 siege 实用程序,模拟向 Bookinfo 发送流量。

  1. 在 Cloud Shell 中,安装 siege:

    Siege 是一种用于针对网站生成负载的实用程序。

    sudo apt install siege
  2. 使用 siege 为您的服务创建流量:

    siege http://${GATEWAY_URL}/productpage

任务 8. 使用 Cloud Service Mesh 信息中心评估服务性能

从 Service 表格视图中收集数据。

  1. 在控制台中,依次前往导航菜单 > Kubernetes Engine > Service Mesh。

如果系统提示,请点击启用,以启用 Service Mesh API。

  1. 查看服务部分。

    列表中显示了多少项服务?

  2. 点击 productpage 服务,展开细目并查看更多详细信息。

    突出显示的 productpage 服务

    请留意顶部的摘要信息,其中详细列出了当前的每秒请求数、错误率、延迟时间以及资源使用情况。

    如果您没有看到 Requests > 0,请尝试退出,然后隔几分钟再重新进入 productpage 服务。

  3. 点击指标选项。探索不同的图表及其细分选项。

    • 当前的请求速率是多少?随时间推移又发生了怎样的变化?
    • 当前的错误率是多少?随时间推移又发生了怎样的变化?
    • 图表中显示的延迟时间是多少?
    • 请求大小的中位数是多少?
    • 响应大小的中位数是多少?
    • 总 CPU 使用率是多少?
  4. 点击关联的服务选项。

    其中列出了向 productpage 发出入站请求的其他服务,以及 productpage 向其发出出站请求的服务。

    • 哪些服务会调用 productpage 服务?
    • productpage 服务会调用哪些服务?
    • 服务间调用是否会强制执行 mTLS?
    注意:ratings 服务通常不会向 productpage 服务发送请求。这里之所以显示 ratings 服务,是因为您在本实验中曾使用该服务发出过测试请求。
  5. 点击左上角的 Cloud Service Mesh 徽标,返回 Cloud Service Mesh 信息中心。

此时,您可以探索或深入了解其他服务。

注意:

信息中心顶部显示了服务等级目标 (SLO) 和提醒的相关信息。

SLO 是服务等级指标 (SLI) 的目标值;它们体现了您对服务性能表现的定义。例如,SLO 可以设定为:每小时有 99.9% 的请求返回 200 响应。您可以定义一项提醒政策,以便在服务未能达到其 SLO 时,自动呼叫值班人员。

探寻其他可以定义和测试 SLO 的实验!

使用拓扑视图更直观地查看网格

  1. 在 Cloud Service Mesh 信息中心内查看拓扑。

    拓扑图可能需要几分钟才会显示,请耐心等待。

  2. 您可以随意拖动图中的节点进行排列,直到能清晰直观地看出服务与工作负载之间的关系。

    请注意,外部请求从 productpage 开始。您可以向上滚动页面,在 Bookinfo 概览 部分查看并研究 Bookinfo 架构图。

    您的绘图可能如下所示:

    服务网格图表

    注意:您可能需要点击展开才能看到所有节点。
  3. 点击 productpage 服务节点。

    此时您应该会看到一个服务详情卡片:

    服务详情卡片

    • 此服务每秒接收多少个请求?
    • 中位数延迟和 99% 延迟时间分别是多少?
  4. 现在,将鼠标悬停在每个服务节点上,观察边缘统计信息。

    • productpage 服务每秒接收多少个请求?这些请求来自何处?
    • 该服务每秒向 productpage-v1 工作负载转发多少个请求?

    您应该会看到如下所示的流量详情:

    流量详情图表

  5. 逐层深入分析其中一个工作负载,直到您能看到 Deployment、副本集和 Pod。

    输出应如下所示:

    Deployment、副本集和 Pod 图表

恭喜!

在本实验中,您成功部署了 GKE 集群、Cloud Service Mesh 以及一个启用了 Istio 的应用。您还通过 Cloud Service Mesh 信息中心深入了解了应用的服务性能和拓扑。

后续步骤/了解详情

Google Cloud 培训和认证

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

上次更新手册的时间:2026 年 6 月 9 日

上次测试实验的时间:2026 年 6 月 9 日

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

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名和密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

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

太好了!

一旦可用,我们会通过邮件联系您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。