diff --git a/content/zh/docs/examples/_index.md b/content/zh/docs/examples/_index.md index f8b159dead..a6d131b12c 100644 --- a/content/zh/docs/examples/_index.md +++ b/content/zh/docs/examples/_index.md @@ -1,6 +1,6 @@ --- title: 示例 -description: 这里包括多个可供 Istio 使用的可完整工作的示例,你可以用来亲自部署和体验这些示例。 +description: 这里包括多个可供 Istio 使用的可完整工作的示例,您可以用来亲自部署和体验这些示例。 weight: 30 icon: examples aliases: diff --git a/content/zh/docs/examples/bookinfo/index.md b/content/zh/docs/examples/bookinfo/index.md index 56cff795e5..d6625dbc2b 100755 --- a/content/zh/docs/examples/bookinfo/index.md +++ b/content/zh/docs/examples/bookinfo/index.md @@ -22,10 +22,10 @@ test: yes Bookinfo 应用分为四个单独的微服务: -* `productpage`. 这个微服务会调用 `details` 和 `reviews` 两个微服务,用来生成页面。 -* `details`. 这个微服务中包含了书籍的信息。 -* `reviews`. 这个微服务中包含了书籍相关的评论。它还会调用 `ratings` 微服务。 -* `ratings`. 这个微服务中包含了由书籍评价组成的评级信息。 +* `productpage`:这个微服务会调用 `details` 和 `reviews` 两个微服务,用来生成页面。 +* `details`:这个微服务中包含了书籍的信息。 +* `reviews`:这个微服务中包含了书籍相关的评论。它还会调用 `ratings` 微服务。 +* `ratings`:这个微服务中包含了由书籍评价组成的评级信息。 `reviews` 微服务有 3 个版本: @@ -38,7 +38,8 @@ Bookinfo 应用分为四个单独的微服务: {{< image width="80%" link="./noistio.svg" caption="Bookinfo Application without Istio" >}} Bookinfo 应用中的几个微服务是由不同的语言编写的。 -这些服务对 Istio 并无依赖,但是构成了一个有代表性的服务网格的例子:它由多个服务、多个语言构成,并且 `reviews` 服务具有多个版本。 +这些服务对 Istio 并无依赖,但是构成了一个有代表性的服务网格的例子: +它由多个服务、多个语言构成,并且 `reviews` 服务具有多个版本。 ## 开始之前{#before-you-begin} @@ -49,12 +50,13 @@ Bookinfo 应用中的几个微服务是由不同的语言编写的。 ## 部署应用{#deploying-the-application} 要在 Istio 中运行这一应用,无需对应用自身做出任何改变。 -您只要简单的在 Istio 环境中对服务进行配置和运行,具体一点说就是把 Envoy sidecar 注入到每个服务之中。 +您只要简单的在 Istio 环境中对服务进行配置和运行,具体一点说就是把 Envoy Sidecar 注入到每个服务之中。 最终的部署结果将如下图所示: {{< image width="80%" link="./withistio.svg" caption="Bookinfo Application" >}} -所有的微服务都和 Envoy sidecar 集成在一起,被集成服务所有的出入流量都被 sidecar 所劫持,这样就为外部控制准备了所需的 Hook,然后就可以利用 Istio 控制平面为应用提供服务路由、遥测数据收集以及策略实施等功能。 +所有的微服务都和 Envoy Sidecar 集成在一起,被集成服务所有的出入流量都被 Sidecar 所劫持, +这样就为外部控制准备了所需的 Hook,然后就可以利用 Istio 控制平面为应用提供服务路由、遥测数据收集以及策略实施等功能。 ### 启动应用服务{#start-the-application-services} @@ -72,7 +74,9 @@ Bookinfo 应用中的几个微服务是由不同的语言编写的。 {{< /text >}} {{< warning >}} - 如果您使用 OpenShift,请确保按照[OpenShift设置页面](/zh/docs/setup/platform-setup/openshift/#privileged-security-context-constraints-for-application-sidecars)中所述为命名空间上的服务帐户授予适当的权限 + 如果您使用 OpenShift,请确保按照 + [OpenShift 设置页面](/zh/docs/setup/platform-setup/openshift/#privileged-security-context-constraints-for-application-sidecars) + 中所述为命名空间上的服务帐户授予适当的权限 {{< /warning >}} 1. 使用 `kubectl` 部署应用: @@ -82,7 +86,10 @@ Bookinfo 应用中的几个微服务是由不同的语言编写的。 {{< /text >}} {{< warning >}} - 如果您在安装过程中禁用了 Sidecar 自动注入功能而选择[手动注入 Sidecar](/zh/docs/setup/additional-setup/sidecar-injection/#manual-sidecar-injection),请在部署应用之前使用 [`istioctl kube-inject`](/zh/docs/reference/commands/istioctl/#istioctl-kube-inject) 命令修改 `bookinfo.yaml` 文件。 + 如果您在安装过程中禁用了 Sidecar + 自动注入功能而选择[手动注入 Sidecar](/zh/docs/setup/additional-setup/sidecar-injection/#manual-sidecar-injection), + 请在部署应用之前使用 [`istioctl kube-inject`](/zh/docs/reference/commands/istioctl/#istioctl-kube-inject) + 命令修改 `bookinfo.yaml` 文件。 {{< text bash >}} $ kubectl apply -f <(istioctl kube-inject -f @samples/bookinfo/platform/kube/bookinfo.yaml@) @@ -130,7 +137,8 @@ Bookinfo 应用中的几个微服务是由不同的语言编写的。 ### 确定 Ingress 的 IP 和端口{#determine-the-ingress-IP-and-port} -现在 Bookinfo 服务启动并运行中,您需要使应用程序可以从外部访问 Kubernetes 集群,例如使用浏览器。可以使用网关实现这个目标。 +现在 Bookinfo 服务启动并运行中,您需要使应用程序可以从外部访问 Kubernetes 集群, +例如使用浏览器。可以使用网关实现这个目标。 1. 为 Bookinfo 应用程序定义一个网关: @@ -154,13 +162,15 @@ Bookinfo 应用中的几个微服务是由不同的语言编写的。 bookinfo-gateway 32s {{< /text >}} - 遵循[这些指示说明](/zh/docs/tasks/traffic-management/ingress/ingress-control/#determining-the-ingress-ip-and-ports)设置 `INGRESS_HOST` 和 `INGRESS_PORT` 变量来访问网关。设置好变量后,返回此处。 + 遵循[这些指示说明](/zh/docs/tasks/traffic-management/ingress/ingress-control/#determining-the-ingress-ip-and-ports) + 设置 `INGRESS_HOST` 和 `INGRESS_PORT` 变量来访问网关。设置好变量后,返回此处。 {{< /tab >}} {{< tab name="Gateway API" category-value="gateway-api" >}} {{< boilerplate external-loadbalancer-support >}} + 使用以下命令创建 [Kubernetes Gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/): {{< text bash >}} @@ -170,7 +180,8 @@ Bookinfo 应用中的几个微服务是由不同的语言编写的。 {{< /text >}} 因为创建 Kubernetes `Gateway` 资源也会 - [部署关联的代理服务](/zh/docs/tasks/traffic-management/ingress/gateway-api/#automated-deployment),所以运行以下命令等待网关就绪: + [部署关联的代理服务](/zh/docs/tasks/traffic-management/ingress/gateway-api/#automated-deployment), + 所以运行以下命令等待网关就绪: {{< text bash >}} $ kubectl wait --for=condition=programmed gtw bookinfo-gateway @@ -202,7 +213,9 @@ $ curl -s "http://${GATEWAY_URL}/productpage" | grep -o ".*" Simple Bookstore App {{< /text >}} -还可以用浏览器打开网址 `http://$GATEWAY_URL/productpage`,来浏览应用的 Web 页面。如果刷新几次应用的页面,就会看到 `productpage` 页面中会随机展示 `reviews` 服务的不同版本的效果(红色、黑色的星形或者没有显示)。`reviews` 服务出现这种情况是因为我们还没有使用 Istio 来控制版本的路由。 +还可以用浏览器打开网址 `http://$GATEWAY_URL/productpage`,来浏览应用的 Web 页面。 +如果刷新几次应用的页面,就会看到 `productpage` 页面中会随机展示 `reviews` 服务的不同版本的效果 +(红色、黑色的星形或者没有显示)。`reviews` 服务出现这种情况是因为我们还没有使用 Istio 来控制版本的路由。 ## 定义服务版本{#define-the-service-versions} @@ -212,15 +225,17 @@ $ curl -s "http://${GATEWAY_URL}/productpage" | grep -o ".*" {{< tab name="Istio classic" category-value="istio-classic" >}} -Istio 在[目标规则](/zh/docs/concepts/traffic-management/#destination-rules)中使用 *subsets* 定义服务的版本。 -运行以下命令为 Bookinfo 服务创建默认的目标规则: +Istio 在[目标规则](/zh/docs/concepts/traffic-management/#destination-rules)中使用 +**subsets** 定义服务的版本。运行以下命令为 Bookinfo 服务创建默认的目标规则: {{< text bash >}} $ kubectl apply -f @samples/bookinfo/networking/destination-rule-all.yaml@ {{< /text >}} {{< tip >}} -`default` 和 `demo` 的[配置文件](/zh/docs/setup/additional-setup/config-profiles/)默认情况下启用了[自动双向 TLS](/zh/docs/tasks/security/authentication/authn-policy/#auto-mutual-tls)。要强制执行双向 TLS,请使用 `samples/bookinfo/networking/destination-rule-all-mtls.yaml` 中的目标规则。 +`default` 和 `demo` 的[配置文件](/zh/docs/setup/additional-setup/config-profiles/)默认情况下启用了 +[自动双向 TLS](/zh/docs/tasks/security/authentication/authn-policy/#auto-mutual-tls)。 +要强制执行双向 TLS,请使用 `samples/bookinfo/networking/destination-rule-all-mtls.yaml` 中的目标规则。 {{< /tip >}} 等待几秒钟,以使目标规则生效。 @@ -251,7 +266,8 @@ $ kubectl apply -f @samples/bookinfo/platform/kube/bookinfo-versions.yaml@ ## 下一步{#what-s-next} 现在就可以使用这一应用来体验 Istio 的特性了,其中包括了流量的路由、错误注入、速率限制等。 -接下来可以根据个人爱好去阅读和演练 [Istio 实例](/zh/docs/tasks)。这里为新手推荐[智能路由](/zh/docs/tasks/traffic-management/request-routing/)功能作为起步课程。 +接下来可以根据个人爱好去阅读和演练 [Istio 实例](/zh/docs/tasks)。 +这里为新手推荐[智能路由](/zh/docs/tasks/traffic-management/request-routing/)功能作为起步课程。 ## 清理{#cleanup} diff --git a/content/zh/docs/examples/microservices-istio/add-istio/index.md b/content/zh/docs/examples/microservices-istio/add-istio/index.md index 07fd35b852..93f4e9ca06 100644 --- a/content/zh/docs/examples/microservices-istio/add-istio/index.md +++ b/content/zh/docs/examples/microservices-istio/add-istio/index.md @@ -76,7 +76,7 @@ Kubernetes 只有在新的 Pod 开始运行的时候才会终止老的 Pod,它 http://my-istio-dashboard.io/dashboard/db/istio-mesh-dashboard {{< /text >}} - 在左上角的下拉菜单中,选择 _Istio Mesh Dashboard_ 。 + 在左上角的下拉菜单中,选择 **Istio Mesh Dashboard**。 {{< image width="80%" link="dashboard-select-dashboard.png" @@ -104,7 +104,7 @@ Kubernetes 只有在新的 Pod 开始运行的时候才会终止老的 Pod,它 caption="Istio Service Dashboard" >}} -这是在一个微服务中应用 Istio 的直接优点,您可以收到进出微服务的流量日志,包括时间、HTTP方法、路径和响应代码。您可以用 Istio 仪表盘监控您的微服务。 +这是在一个微服务中应用 Istio 的直接优点,您可以收到进出微服务的流量日志,包括时间、HTTP 方法、路径和响应代码。您可以用 Istio 仪表盘监控您的微服务。 在下一个模块,您将会学习到关于 Istio 可以为您的应用提供的功能。当 Istio 的功能对微服务是有益的时候,您将学习如何在整个应用程序上使用 Istio 来实现其全部潜力。 diff --git a/content/zh/docs/examples/microservices-istio/add-new-microservice-version/index.md b/content/zh/docs/examples/microservices-istio/add-new-microservice-version/index.md index 60c9a285ff..0e20a84604 100644 --- a/content/zh/docs/examples/microservices-istio/add-new-microservice-version/index.md +++ b/content/zh/docs/examples/microservices-istio/add-new-microservice-version/index.md @@ -8,7 +8,7 @@ owner: istio/wg-docs-maintainers test: no --- -在此模块中,你将部署 reviews 服务的一个新版本 v2,该服务将返回审阅人员提供的评分星级和评级颜色。 +在此模块中,您将部署 reviews 服务的一个新版本 v2,该服务将返回审阅人员提供的评分星级和评级颜色。 在实际场景中,在部署之前,您将在模拟环境中执行静态分析测试、单元测试、集成测试、端到端测试和验证。 1. 部署 `reviews` 不带 `app=reviews` 标签的新版本微服务。没有此标签,将不会选择新版本 `reviews` 来提供服务。 @@ -19,7 +19,7 @@ test: no deployment.apps/reviews-v2 created {{< /text >}} -1. 访问你的应用程序以确保已部署的微服务不会破坏它。 +1. 访问您的应用程序以确保已部署的微服务不会破坏它。 1. 从集群内部使用您之前部署的测试容器测试新版本的微服务。请注意您的新版本在测试期间访问微服务 ratings 的生产 Pods。 还需要注意,您必须使用 Pod IP 访问新版本的微服务,因为它还没有被 `reviews` 服务选中。 @@ -86,14 +86,14 @@ test: no 多次访问程序页面,发现大约有 25% 的时间会出现黑色星级。 -1. 接下来,增加新版本的副本。你可以慢慢的,仔细地检查没有错误的数量增加。 +1. 接下来,增加新版本的副本。您可以慢慢的,仔细地检查没有错误的数量增加。 {{< text bash >}} $ kubectl scale deployment reviews-v2 --replicas=3 deployment.apps/reviews-v2 scaled {{< /text >}} - 现在,你可以访问几次您的应用程序页面,看到黑色星级出现的时间大约是一半。 + 现在,您可以访问几次您的应用程序页面,看到黑色星级出现的时间大约是一半。 1. 现在,您可以停用旧版: @@ -104,18 +104,18 @@ test: no 访问该应用程序的页面将只返回带有黑色的评级。 -在以上步骤中,您执行了更新 `reviews`。首先,你发布了新版本且没有发送模拟生产流量。 +在以上步骤中,您执行了更新 `reviews`。首先,您发布了新版本且没有发送模拟生产流量。 您在生产环境中使用测试流量对其进行了测试。您检查了新版本是否提供正确的结果。 您发布了新版本,并逐渐增加其生产流量。最后,您停用了旧版本。 在这里,您可以使用以下示例任务来改进部署策略。首先,在生产中进行端到端测试。 这要求能够使用请求参数(例如使用存储在 Cookie 中的用户名)将流量驱动到新版本。 此外,对新版本的生产流量进行屏蔽,并检查新版本是否提供了错误的结果或者产生了错误。 -最后,获得对部署的更详细的控制。例如,你可以部署 1%,然后每小时增加 1%,只要服务没有被降级。 -Istio 直接帮助你执行这些任务来增强 Kubernetes 的价值。有关部署的更多详细信息和最佳实践,请参阅 +最后,获得对部署的更详细的控制。例如,您可以部署 1%,然后每小时增加 1%,只要服务没有被降级。 +Istio 直接帮助您执行这些任务来增强 Kubernetes 的价值。有关部署的更多详细信息和最佳实践,请参阅 [部署模型](/zh/docs/ops/deployment/deployment-models/)。 -在这里,你有两个选择: +在这里,您有两个选择: 1. 使用 _service mesh_ 。在服务网格中,您将所有报告、路由、策略、安全逻辑放在 _Sidecar_ 代理中,并 *透明的* 注入到您的应用程序 Pod 中。业务逻辑保留在应用程序代码中,无需更改应用程序的代码。 diff --git a/content/zh/docs/examples/microservices-istio/package-service/index.md b/content/zh/docs/examples/microservices-istio/package-service/index.md index fde6ac76b2..92f1f6eda2 100644 --- a/content/zh/docs/examples/microservices-istio/package-service/index.md +++ b/content/zh/docs/examples/microservices-istio/package-service/index.md @@ -24,7 +24,7 @@ test: no $ cat Dockerfile {{< /text >}} - 请注意,它将文件复制到容器的文件系统中,然后执行你在上一个模块中执行过的 `npm install` 命令。 + 请注意,它将文件复制到容器的文件系统中,然后执行您在上一个模块中执行过的 `npm install` 命令。 `CMD` 命令指示 Docker 在 `9080` 端口上运行 `ratings` 服务。 1. 创建一个环境变量来存储您的用户 ID,该用户 ID 将用于标记 docker 镜像以进行 `ratings` 服务。 @@ -47,7 +47,7 @@ test: no {{< /text >}} 1. 在 Docker 中运行 `ratings` 服务. 接下来的 [docker run](https://docs.docker.com/engine/reference/commandline/run/) 命令 - 指示 Docker 将容器的 `9080` 端口暴露到计算机的 `9081` 端口,从而允许你访问 `9081` 端口上的 `ratings` 微服务。 + 指示 Docker 将容器的 `9080` 端口暴露到计算机的 `9081` 端口,从而允许您访问 `9081` 端口上的 `ratings` 微服务。 {{< text bash >}} $ docker run --name my-ratings --rm -d -p 9081:9080 $USER/rating diff --git a/content/zh/docs/examples/microservices-istio/prereq/index.md b/content/zh/docs/examples/microservices-istio/prereq/index.md index eca51cdc3c..09ffe01aae 100644 --- a/content/zh/docs/examples/microservices-istio/prereq/index.md +++ b/content/zh/docs/examples/microservices-istio/prereq/index.md @@ -8,22 +8,22 @@ test: n/a {{< boilerplate work-in-progress >}} -对于本教程,你需要一个 Kubernetes 集群,集群中需要包含本教程模块中的命名空间, -并且可以在本地电脑上执行这些命令。如果你有自己的集群,确保集群满足这些前提条件。 +对于本教程,您需要一个 Kubernetes 集群,集群中需要包含本教程模块中的命名空间, +并且可以在本地电脑上执行这些命令。如果您有自己的集群,确保集群满足这些前提条件。 -如果你在一个学习班上,并且讲师提供了一个集群,让他们来处理集群的前提条件,你可以跳过本地电脑的设置。 +如果您在一个学习班上,并且讲师提供了一个集群,让他们来处理集群的前提条件,您可以跳过本地电脑的设置。 ## Kubernetes 集群{#Kubernetes-cluster} 确保满足以下条件: -- 你拥有名为 `tutorial-cluster` 的 Kubernetes 集群管理员权限和集群上运行的虚拟机的管理员权限。 -- 你可以在集群中为每个参与者创建名称空间。 +- 您拥有名为 `tutorial-cluster` 的 Kubernetes 集群管理员权限和集群上运行的虚拟机的管理员权限。 +- 您可以在集群中为每个参与者创建名称空间。 ## 本地计算机{#local-computer} 确保满足以下条件: -- 你拥有本地计算机 `/etc/hosts` 文件的写入权限。 -- 你可以在本地计算机上下载、安装和运行命令行工具。 -- 在本教程期间,你可以连接到网络。 +- 您拥有本地计算机 `/etc/hosts` 文件的写入权限。 +- 您可以在本地计算机上下载、安装和运行命令行工具。 +- 在本教程期间,您可以连接到网络。 diff --git a/content/zh/docs/examples/microservices-istio/single/index.md b/content/zh/docs/examples/microservices-istio/single/index.md index e8757c765f..9c62ee09dc 100644 --- a/content/zh/docs/examples/microservices-istio/single/index.md +++ b/content/zh/docs/examples/microservices-istio/single/index.md @@ -15,7 +15,7 @@ test: no 在微服务架构时代,开发人员编写、构建、测试和运行小型的软件服务。构建是快速的。使用类似 [Node.js](https://nodejs.org/zh-cn/) 这样的现代框架, 由于服务是作为常规进程来运行的,就不需要安装并管理 -复杂的服务环境来测试它了。您不再仅仅为了测试您的服务就得将它部署到某个环境了,您只需要构建您的服务并且直接在你本地机器上运行即可。 +复杂的服务环境来测试它了。您不再仅仅为了测试您的服务就得将它部署到某个环境了,您只需要构建您的服务并且直接在您本地机器上运行即可。 该模块涵盖了在本地机器上开发单个服务所涉及的不同方面。不过,您无需编写代码,只需要编译、运行和测试现有服务 `rating`。 diff --git a/content/zh/docs/examples/virtual-machines/index.md b/content/zh/docs/examples/virtual-machines/index.md index c8227914a6..a296962eea 100644 --- a/content/zh/docs/examples/virtual-machines/index.md +++ b/content/zh/docs/examples/virtual-machines/index.md @@ -14,15 +14,16 @@ owner: istio/wg-environments-maintainers test: yes --- -本示例通过在虚拟机(VM)上运行一项服务来跨 Kubernetes 部署 Bookinfo 应用程序,并说明了如何以单个网格的形式控制此基础架构。 +本示例通过在虚拟机(VM)上运行一项服务来跨 Kubernetes 部署 Bookinfo 应用程序, +并说明了如何以单个网格的形式控制此基础架构。 ## 概述{#overview} -{{< image width="80%" link="./vm-bookinfo.svg" caption="在虚机上运行 Bookinfo" >}} +{{< image width="80%" link="./vm-bookinfo.svg" caption="在虚拟机上运行 Bookinfo" >}} +--> ## 开始之前{#before-you-begin} @@ -30,13 +31,14 @@ https://docs.google.com/drawings/d/1G1592HlOVgtbsIqxJnmMzvy6ejIdhajCosxF1LbvspI/ - 部署 [Bookinfo](/zh/docs/examples/bookinfo/) 示例应用(在 `bookinfo` 命名空间下)。 -- 按照[虚拟机配置](/zh/docs/setup/install/virtual-machine/#configure-the-virtual-machine)创建一个虚拟机并添加到 `vm` 命名空间下。 +- 按照[虚拟机配置](/zh/docs/setup/install/virtual-machine/#configure-the-virtual-machine) + 创建一个虚拟机并添加到 `vm` 命名空间下。 ## 在虚拟机上运行 MySQL{#running-MySQL-on-the-VM} 您将在虚拟机上安装 MySQL,并将其配置为 ratings 服务的后端。 -下列的所有命令都在虚机上执行。 +下列的所有命令都在虚拟机上执行。 安装 `mariadb`: @@ -69,7 +71,7 @@ $ curl -LO {{< github_file >}}/samples/bookinfo/src/mysql/mysqldb-init.sql $ mysql -u root -ppassword < mysqldb-init.sql {{< /text >}} -为了便于直观地检查 Bookinfo 应用程序输出中的差异,您可以使用以下命令来更改所生成的 ratings 数据库并且检查它: +为了便于直观地检查 Bookinfo 应用程序输出中的差异,您可以使用以下命令来更改并检查所生成的 ratings 数据库: {{< text bash >}} $ mysql -u root -ppassword test -e "select * from ratings;" @@ -95,7 +97,8 @@ $ mysql -u root -ppassword test -e "update ratings set rating=1 where reviewid= ## 向网格中注册 mysql 服务{#registering-the-mysql-service-with-the-mesh} -当虚机启动时,将会自动被注册到网格中。然而,就像我们创建一个 Pod 一样,在更加便捷的访问之前需要创建一个 Service 。 +当虚拟机启动时,将会自动被注册到网格中。 +然而,就像创建 Pod 一样,仍需要创建一个 Service 才能进行轻松访问。 {{< text bash >}} $ cat <}} $ kubectl apply -n bookinfo -f @samples/bookinfo/platform/kube/bookinfo-ratings-v2-mysql-vm.yaml@ @@ -128,17 +133,33 @@ $ kubectl apply -n bookinfo -f @samples/bookinfo/platform/kube/bookinfo-ratings- $ kubectl apply -n bookinfo -f @samples/bookinfo/networking/virtual-service-ratings-mysql-vm.yaml@ {{< /text >}} -您可以验证 Bookinfo 应用程序的输出显示的是 Reviewer1 的 1 个星,还是 Reviewer2 的 4 个星,或者更改虚拟机的 ratings 服务并查看结果。 +您可以验证 Bookinfo 应用程序的输出显示的是 Reviewer1 的 1 个星, +还是 Reviewer2 的 4 个星,或者更改虚拟机的 ratings 服务并查看结果。 -## 从虚机访问 Kubernetes 服务{#reaching-Kubernetes-services-from-the-virtual-machine} +## 从虚拟机访问 Kubernetes 服务{#reaching-Kubernetes-services-from-the-virtual-machine} -在上面的示例中,我们将虚拟机视为一个服务。 您还可以在您的虚拟机中无缝调用 Kubernetes 的服务: +在上面的示例中,我们将虚拟机视为一个服务。 +您还可以在您的虚拟机中无缝调用 Kubernetes 的服务: {{< text bash >}} $ curl productpage.bookinfo:9080 ... -Simple Bookstore App + Simple Bookstore App ... {{< /text >}} -Istio 的 [DNS 代理](/zh/docs/ops/configuration/traffic-management/dns-proxy/)自动为您的虚机配置 DNS , 允许我们 Kubernetes 的主机名进行访问。 +Istio 的 [DNS 代理](/zh/docs/ops/configuration/traffic-management/dns-proxy/)自动为您的虚拟机配置 +DNS,允许通过 Kubernetes 的主机名进行访问。 + +## 清理{#cleanup} + +- 按照 [`Bookinfo` 清理](/zh/docs/examples/bookinfo/#cleanup)中的步骤, + 删除 `Bookinfo` 样例应用及其配置。 +- 删除 `mysqldb` 服务: + + {{< text syntax=bash snip_id=none >}} + $ kubectl delete service mysqldb + {{< /text >}} + +- 按照[虚拟机卸载](/zh/docs/setup/install/virtual-machine/#configure-the-virtual-machine) + 中的步骤清理 VM。