GSP654
概览
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 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。右侧是实验设置和访问权限面板,其中包含以下内容:
-
打开 Google Cloud 控制台按钮
- 您在本实验中必须使用的临时凭证(用户名和密码)
- 帮助您逐步完成该实验所需的其他信息(如果需要)
请注意,实验计时器位于页面顶部附近,将显示剩余时间。
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:可以将这些标签页分别放在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在实验设置和访问权限面板中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在实验设置和访问权限面板中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭证。请勿使用您的 Google Cloud 账号凭证。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
依次点击进入后续页面:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重身份验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
-
点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
-
在弹出的窗口中执行以下操作:
- 继续完成 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 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
- 点击授权。
输出:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南。
任务 1. 设置项目
验证 SDK 配置
-
在 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-#####]
-
根据需要更新项目配置。
如果 SDK 的默认项目设置不正确,请更新配置。将 [project_id] 替换为 Qwiklabs 说明页面凭证部分中提供的项目名称:
gcloud config set project [project_id]
配置环境变量
- 配置将在设置和安装命令中使用的环境变量:
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 集群
创建集群
- 在 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
集群创建可能需要几分钟时间才能完成。
- 集群创建完成后,执行以下命令序列,从而激活
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
- 将 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。
- 将用于安装 Cloud Service Mesh 1.28 的版本下载到当前工作目录:
curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.28 > asmcli
- 为脚本授予可执行权限:
chmod +x asmcli
- 启用 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。
- 运行以下命令以验证配置并将安装文件和
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。
- 运行以下命令以安装 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 代理,可让您精确控制进出网格的流量。
- 如果您还没有入站流量网关的命名空间,请先创建一个。网关属于用户工作负载,根据最佳实践,不应将其部署在控制平面命名空间中。
GATEWAY_NS=istio-gateway
kubectl create namespace $GATEWAY_NS
-
通过为网关命名空间应用修订版本标签,即可在网关上启用自动注入功能。边车注入器 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
kubectl label namespace default istio-injection=enabled
kubectl label namespace $GATEWAY_NS istio-injection=enabled
-
切换到您在 --output_dir 中指定的目录:
cd ~/asm_output
- 您可以按原样部署位于
samples/gateways/istio-ingressgateway/ 目录中的示例入站流量网关配置,也可以根据需要对其进行修改:
kubectl apply -n $GATEWAY_NS \
-f samples/gateways/istio-ingressgateway
启用边车注入
Cloud Service Mesh 会使用边车代理来增强网络安全性、可靠性和可观测性。借助 Cloud Service Mesh,这些功能可以从应用的主容器中抽象出来,并在同一 Pod 中作为独立容器部署的通用进程外代理中实现。
-
在部署工作负载之前,请务必配置边车代理注入,以便 Cloud Service Mesh 可以监控和保护流量。
-
若要启用自动注入,请应用修订版本标签,并移除 istio-injection 标签(如果存在)。
-
在以下命令中,您需要指定要启用自动注入的命名空间 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 颗红色星标显示评分。
该应用的端到端架构如下所示:

您可以在 Istio 的 samples/bookinfo 目录中找到此示例中使用的源代码及所有其他文件。
部署 Bookinfo
-
查看描述 BookInfo 应用的 .yaml 文件:
istio_dir=$(ls -d istio-* | tail -n 1)
cd $istio_dir
cat samples/bookinfo/platform/kube/bookinfo.yaml
查找 containers 部分,确认 Bookinfo 应用中每个服务的每个版本在相应的部署中都包含一个容器。
-
在 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 网关正是为此而设计的。
-
查看 .yaml 文件,其中描述了应用入站流量网关的配置:
cat samples/bookinfo/networking/bookinfo-gateway.yaml
在部署的资源中查找 Gateway 和 VirtualService 网格资源。Gateway 可将服务公开给服务网格之外的用户,并允许将监控和路由规则等 Istio 功能应用于进入集群的流量。
-
为应用配置入站流量网关,该网关会公开一个您稍后将用到的外部 IP:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
输出:
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created
验证 Bookinfo 部署
-
确认应用已正确部署,查看服务、Pod 和入站流量网关:
kubectl get services
输出:
NAME TYPE ...
details ClusterIP ...
kubernetes ClusterIP ...
productpage ClusterIP ...
ratings ClusterIP ...
reviews ClusterIP ...
-
查看正在运行的应用 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 都处于正在运行状态。
-
从集群中的某个 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>"
输出:
简单的书店应用
-
确认入站流量网关已创建:
kubectl get gateway
输出:
NAME AGE
bookinfo-gateway 20m
-
获取入站流量网关的外部 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。
-
现在运行以下命令,并将 [EXTERNAL-IP] 替换为上一个命令输出的外部 IP:
export GATEWAY_URL=[EXTERNAL-IP]
-
从集群外部向 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 应用
在网络浏览器中试用该应用
-
通过浏览器访问 http://[$GATEWAY_URL]/productpage 以查看 BookInfo 网页。记得将 [$GATEWAY_URL] 替换为您实际使用的外部 IP 地址。

-
多刷新几次页面。
请注意,您会看到三个不同版本的评价,这是因为我们尚未利用 Istio 来控制版本路由。
系统会以轮循方式调用三种不同的图书评价服务:
在三者之间随机切换是正常的 Kubernetes 路由/负载均衡行为。
生成稳定的后台负载
运行 siege 实用程序,模拟向 Bookinfo 发送流量。
-
在 Cloud Shell 中,安装 siege:
Siege 是一种用于针对网站生成负载的实用程序。
sudo apt install siege
-
使用 siege 为您的服务创建流量:
siege http://${GATEWAY_URL}/productpage
任务 8. 使用 Cloud Service Mesh 信息中心评估服务性能
从 Service 表格视图中收集数据。
- 在控制台中,依次前往导航菜单 > Kubernetes Engine > Service Mesh。
如果系统提示,请点击启用,以启用 Service Mesh API。
-
查看服务部分。
列表中显示了多少项服务?
-
点击 productpage 服务,展开细目并查看更多详细信息。

请留意顶部的摘要信息,其中详细列出了当前的每秒请求数、错误率、延迟时间以及资源使用情况。
如果您没有看到 Requests > 0,请尝试退出,然后隔几分钟再重新进入 productpage 服务。
-
点击指标选项。探索不同的图表及其细分选项。
- 当前的请求速率是多少?随时间推移又发生了怎样的变化?
- 当前的错误率是多少?随时间推移又发生了怎样的变化?
- 图表中显示的延迟时间是多少?
- 请求大小的中位数是多少?
- 响应大小的中位数是多少?
- 总 CPU 使用率是多少?
-
点击关联的服务选项。
其中列出了向 productpage 发出入站请求的其他服务,以及 productpage 向其发出出站请求的服务。
- 哪些服务会调用 productpage 服务?
-
productpage 服务会调用哪些服务?
- 服务间调用是否会强制执行 mTLS?
注意:ratings 服务通常不会向 productpage 服务发送请求。这里之所以显示 ratings 服务,是因为您在本实验中曾使用该服务发出过测试请求。
-
点击左上角的 Cloud Service Mesh 徽标,返回 Cloud Service Mesh 信息中心。
此时,您可以探索或深入了解其他服务。
注意:信息中心顶部显示了服务等级目标 (SLO) 和提醒的相关信息。
SLO 是服务等级指标 (SLI) 的目标值;它们体现了您对服务性能表现的定义。例如,SLO 可以设定为:每小时有 99.9% 的请求返回 200 响应。您可以定义一项提醒政策,以便在服务未能达到其 SLO 时,自动呼叫值班人员。
探寻其他可以定义和测试 SLO 的实验!
使用拓扑视图更直观地查看网格
-
在 Cloud Service Mesh 信息中心内查看拓扑。
拓扑图可能需要几分钟才会显示,请耐心等待。
-
您可以随意拖动图中的节点进行排列,直到能清晰直观地看出服务与工作负载之间的关系。
请注意,外部请求从 productpage 开始。您可以向上滚动页面,在 Bookinfo 概览 部分查看并研究 Bookinfo 架构图。
您的绘图可能如下所示:

注意:您可能需要点击展开才能看到所有节点。
-
点击 productpage 服务节点。
此时您应该会看到一个服务详情卡片:

- 此服务每秒接收多少个请求?
- 中位数延迟和 99% 延迟时间分别是多少?
-
现在,将鼠标悬停在每个服务节点上,观察边缘统计信息。
-
productpage 服务每秒接收多少个请求?这些请求来自何处?
- 该服务每秒向 productpage-v1 工作负载转发多少个请求?
您应该会看到如下所示的流量详情:

-
逐层深入分析其中一个工作负载,直到您能看到 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 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。