diff --git a/content/zh/docs/examples/virtual-machines/index.md b/content/zh/docs/examples/virtual-machines/index.md index a296962eea..aaa721e3ce 100644 --- a/content/zh/docs/examples/virtual-machines/index.md +++ b/content/zh/docs/examples/virtual-machines/index.md @@ -17,7 +17,7 @@ test: yes 本示例通过在虚拟机(VM)上运行一项服务来跨 Kubernetes 部署 Bookinfo 应用程序, 并说明了如何以单个网格的形式控制此基础架构。 -## 概述{#overview} +## 概述 {#overview} {{< image width="80%" link="./vm-bookinfo.svg" caption="在虚拟机上运行 Bookinfo" >}} @@ -25,7 +25,7 @@ test: yes https://docs.google.com/drawings/d/1G1592HlOVgtbsIqxJnmMzvy6ejIdhajCosxF1LbvspI/edit --> -## 开始之前{#before-you-begin} +## 开始之前 {#before-you-begin} - 按照[虚拟机安装引导](/zh/docs/setup/install/virtual-machine/)的介绍来配置 Istio。 @@ -34,7 +34,7 @@ https://docs.google.com/drawings/d/1G1592HlOVgtbsIqxJnmMzvy6ejIdhajCosxF1LbvspI/ - 按照[虚拟机配置](/zh/docs/setup/install/virtual-machine/#configure-the-virtual-machine) 创建一个虚拟机并添加到 `vm` 命名空间下。 -## 在虚拟机上运行 MySQL{#running-MySQL-on-the-VM} +## 在虚拟机上运行 MySQL {#running-MySQL-on-the-VM} 您将在虚拟机上安装 MySQL,并将其配置为 ratings 服务的后端。 @@ -62,16 +62,18 @@ EOF $ sudo systemctl restart mysql {{< /text >}} -您可以在 [Mysql](https://mariadb.com/kb/en/library/download/) 中找到配置 MySQL 的详细信息。 +您可以在 [Mysql](https://mariadb.com/kb/en/library/download/) +中找到配置 MySQL 的详细信息。 -在虚拟机上,将 ratings 数据库添加到 mysql 中。 +在虚拟机上,将 ratings 数据库导入到 mysql 中。 {{< text bash >}} $ 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;" @@ -83,7 +85,7 @@ $ mysql -u root -ppassword test -e "select * from ratings;" +----------+--------+ {{< /text >}} -更改 ratings 数据库: +更改 `ratings` 数据库: {{< text bash >}} $ mysql -u root -ppassword test -e "update ratings set rating=1 where reviewid=1;select * from ratings;" @@ -95,10 +97,10 @@ $ mysql -u root -ppassword test -e "update ratings set rating=1 where reviewid= +----------+--------+ {{< /text >}} -## 向网格中注册 mysql 服务{#registering-the-mysql-service-with-the-mesh} +## 将 mysql 服务暴露给网格 {#expose-the-mysql-service-to-the-mesh} 当虚拟机启动时,将会自动被注册到网格中。 -然而,就像创建 Pod 一样,仍需要创建一个 Service 才能进行轻松访问。 +然而,就像创建 Pod 时一样,我们仍然需要创建一个 Service,然后才能轻松访问它。 {{< text bash >}} $ cat <}} -## 使用 mysql 服务{#using-the-mysql-service} +## 使用 mysql 服务 {#using-the-mysql-service} Bookinfo 中的 ratings 服务将使用该虚拟机上的数据库。 为了验证它是否正常工作,请在虚拟机上创建使用 mysql 数据库的 ratings 服务第二个版本。 @@ -136,7 +138,7 @@ $ kubectl apply -n bookinfo -f @samples/bookinfo/networking/virtual-service-rati 您可以验证 Bookinfo 应用程序的输出显示的是 Reviewer1 的 1 个星, 还是 Reviewer2 的 4 个星,或者更改虚拟机的 ratings 服务并查看结果。 -## 从虚拟机访问 Kubernetes 服务{#reaching-Kubernetes-services-from-the-virtual-machine} +## 从虚拟机访问 Kubernetes 服务 {#reaching-Kubernetes-services-from-the-virtual-machine} 在上面的示例中,我们将虚拟机视为一个服务。 您还可以在您的虚拟机中无缝调用 Kubernetes 的服务: @@ -151,11 +153,11 @@ $ curl productpage.bookinfo:9080 Istio 的 [DNS 代理](/zh/docs/ops/configuration/traffic-management/dns-proxy/)自动为您的虚拟机配置 DNS,允许通过 Kubernetes 的主机名进行访问。 -## 清理{#cleanup} +## 清理 {#cleanup} - 按照 [`Bookinfo` 清理](/zh/docs/examples/bookinfo/#cleanup)中的步骤, 删除 `Bookinfo` 样例应用及其配置。 -- 删除 `mysqldb` 服务: +- 删除 `mysqldb` Service: {{< text syntax=bash snip_id=none >}} $ kubectl delete service mysqldb diff --git a/content/zh/docs/ops/diagnostic-tools/proxy-cmd/index.md b/content/zh/docs/ops/diagnostic-tools/proxy-cmd/index.md index e48ae52491..994593a7b8 100644 --- a/content/zh/docs/ops/diagnostic-tools/proxy-cmd/index.md +++ b/content/zh/docs/ops/diagnostic-tools/proxy-cmd/index.md @@ -19,18 +19,17 @@ Istio 提供了两个非常有价值的命令来帮助诊断流量管理配置 如果您想尝试以下的命令,需要: -* 有一个安装了 Istio 和 Bookinfo 应用的 Kubernetes 集群(正如在 -[安装步骤](/zh/docs/setup/getting-started/)和 -[Bookinfo 安装步骤](/zh/docs/examples/bookinfo/#deploying-the-application)所描述的那样)。 +* 有一个安装了 Istio 和 Bookinfo 应用的 Kubernetes 集群(正如在[安装步骤](/zh/docs/setup/getting-started/)和 + [Bookinfo 安装步骤](/zh/docs/examples/bookinfo/#deploying-the-application)所描述的那样)。 -或者 +或者: * 使用类似的命令在 Kubernetes 集群中运行您自己的应用。 -## 获取网格概况{#get-an-overview-of-your-mesh} +## 获取网格概况 {#get-an-overview-of-your-mesh} -`proxy-status` 命令容许您获取网格的概况。如果您怀疑某一个 Sidecar -没有接收到配置或配置不同步时,`proxy-status` 将告诉您原因。 +您可以使用 `proxy-status` 命令获取网格的概况。如果您怀疑某一个 Sidecar +没有接收到配置或配置不同步时,可以通过 `proxy-status` 命令进行检测。 {{< text bash >}} $ istioctl proxy-status @@ -47,16 +46,15 @@ reviews-v3-7dbcdcbc56-t8wrx.default SYNCED SYNCED SYN 如果列表中缺少代理,这意味着它目前没有连接到 Istiod 实例,因此不会接收任何配置。 -* `SYNCED` 意思是 Envoy 知晓了 {{< gloss >}}Istiod{{< /gloss >}} - 已经将最新的配置发送给了它。 -* `NOT SENT` 意思是 Istiod 没有发送任何信息给 Envoy。这通常是因为 +* `SYNCED` 表示 Envoy 已确认 {{}}Istiod{{}} 发送给它的最新配置。 +* `NOT SENT` 表示 Istiod 尚未向 Envoy 发送任何内容。这通常是因为 Istiod 没什么可发送的。 -* `STALE` 意思是 Istiod 已经发送了一个更新到 Envoy,但还没有收到应答。 - 这通常意味着 Envoy 和 Istiod 之间存在网络问题,或者 Istio 自身的 bug。 +* `STALE` 表示 Istiod 已经将更新的配置发送到给了 Envoy,但还没有收到应答。 + 这通常意味着 Envoy 和 Istiod 之间存在网络问题,或者 Istio 自身存在问题。 ## 检查 Envoy 和 Istiod 的差异 {#retrieve-diffs-between-envoy-and-Istiod} -通过提供代理 ID,`proxy-status` 命令还可以用来检查 Envoy +`proxy-status` 命令还可以通过代理 ID 来检查 Envoy 已加载的配置和 Istiod 发送给它的配置有什么异同,这可以帮您准确定位哪些配置是不同步的, 以及问题出在哪里。 @@ -106,13 +104,14 @@ Listeners Match Routes Match (RDS last loaded at Tue, 04 Aug 2020 11:52:54 IST) {{< /text >}} -从这儿可以看到,监听器和路由是匹配的,但集群不同步。 +从这儿可以看到,监听器和路由是匹配的,但集群信息不同步。 ## 深入 Envoy 配置 {#deep-dive-into-envoy-configuration} `proxy-config` 命令可以用来查看给定的 Envoy 是如何配置的。 -这样就可以通过 Istio 配置和自定义资源来查明任何您无法检测到的问题。 -下面的命令为给定 Pod 提供了集群、监听器或路由的基本概要(当需要时可以为监听器或路由改变集群): +这样就可以使用它来检测仅通过查看 Istio 配置和自定义资源无法检测到的一些问题。 +下面的命令展示了给定 Pod 的集群(cluster)、监听器(listener)或路由(route)的基本概要 +(当需要时可以为监听器或路由改变集群): {{< text bash >}} $ istioctl proxy-config cluster -n istio-system istio-ingressgateway-7d6874b48f-qxhn5 @@ -142,7 +141,7 @@ xds-grpc - zipkin - - - STRICT_DNS {{< /text >}} -为了调试 Envoy 您需要理解 Envoy 集群、监听器、路由、endpoints +为了调试 Envoy,您需要理解 Envoy 集群、监听器、路由、Endpoint 以及它们是如何交互的。我们将使用带有 `-o json` 参数的 `proxy-config` 命令,根据标志过滤出并跟随特定的 Envoy,它将请求从 `productpage` Pod 发送到 `reviews` Pod 9080 端口。 @@ -308,9 +307,9 @@ zipkin - ... {{< /text >}} -1. 此集群配置为从 Istiod(通过 ADS)检索关联的 endpoints。 +1. 此集群配置为从 Istiod(通过 ADS)检索关联的 Endpoint。 所以 Envoy 会使用 `serviceName` 字段作为主键,来检查 - endpoint 列表并把请求代理到其中之一。 + Endpoint 列表并把请求代理到其中之一。 {{< text bash json >}} $ istioctl proxy-config cluster productpage-v1-6c886ff494-7vxhs --fqdn reviews.default.svc.cluster.local -o json @@ -340,7 +339,7 @@ zipkin - ] {{< /text >}} -1. 要查看此集群当前可用的 endpoint,请使用 `proxy-config` endpoints 命令。 +1. 要查看此集群当前可用的 Endpoint,请使用 `proxy-config` endpoints 命令。 {{< text bash json >}} $ istioctl proxy-config endpoints productpage-v1-6c886ff494-7vxhs --cluster "outbound|9080||reviews.default.svc.cluster.local" @@ -408,16 +407,17 @@ $ istioctl proxy-config bootstrap -n istio-system istio-ingressgateway-7d6874b48 验证与 Istiod 的连通性是一个有用的故障排除步骤。 服务网格内的每个代理容器都应该能和 Istiod 通信。 -这可以通过几个简单的步骤来实现: +这可以通过几个简单的步骤来检测: -1. 创建一个 `sleep` pod: +1. 创建一个 `sleep` Pod: {{< text bash >}} $ kubectl create namespace foo $ kubectl apply -f <(istioctl kube-inject -f samples/sleep/sleep.yaml) -n foo {{< /text >}} -1. 使用`curl`测试 Istiod 的连接。下面的示例使用默认 Istiod 配置参数和启用相互 TLS 调用 v1 注册 API: +1. 使用 `curl` 测试 Istiod 的连接。下面的示例使用默认 Istiod 配置参数和启用双向 TLS + 调用 v1 注册 API: {{< text bash >}} $ kubectl exec $(kubectl get pod -l app=sleep -n foo -o jsonpath={.items..metadata.name}) -c sleep -n foo -- curl -sS istiod.istio-system:15014/version @@ -425,7 +425,7 @@ $ istioctl proxy-config bootstrap -n istio-system istio-ingressgateway-7d6874b48 您应该收到一个响应,其中列出了 Istiod 的版本。 -## Istio 使用的 Envoy 版本是什么?{#what-envoy-version-is-Istio-using} +## Istio 使用的 Envoy 版本是什么? {#what-envoy-version-is-Istio-using} 要在部署中找出 Envoy 的版本,您可以通过 `exec` 进入容器并查询 `server_info` 终端: diff --git a/content/zh/docs/ops/integrations/prometheus/index.md b/content/zh/docs/ops/integrations/prometheus/index.md index 3030111caa..3e20d0eb1c 100644 --- a/content/zh/docs/ops/integrations/prometheus/index.md +++ b/content/zh/docs/ops/integrations/prometheus/index.md @@ -8,7 +8,7 @@ test: n/a --- [Prometheus](https://prometheus.io/) 是一个开源的监控系统、 -时间序列数据库。您可以利用 Prometheus 与 Istio 集成来收集指标, +时间序列数据库。您可以利用 Prometheus 与 Istio 集成来收集指标(Metrics), 通过这些指标判断 Istio 和网格内的应用的运行状况。您可以使用 [Grafana](/zh/docs/ops/integrations/grafana/) 和 [Kiali](/zh/docs/tasks/observability/kiali/) 来可视化这些指标。 @@ -23,7 +23,7 @@ Istio 提供了一个简单地安装示例来快速安装、运行 Prometheus: $ kubectl apply -f {{< github_file >}}/samples/addons/prometheus.yaml {{< /text >}} -这将会在您的集群中部署 Prometheus。这仅用于展示,不会针对性能和安全性进行调整。 +这将会在您的集群中部署 Prometheus。这仅用于演示,并未针对性能或安全性进行调整。 {{< warning >}} 快速开始的配置仅适合小型集群和短期监控,不适用于大型网格和长时间的监控。 @@ -49,7 +49,6 @@ $ kubectl apply -f {{< github_file >}}/samples/addons/prometheus.yaml 1. 控制平面(`istiod` Deployment) 1. 入口和出口网关 -1. Ingress and Egress gateways 1. Envoy Sidecar 1. 用户应用程序(如果这些应用程序向 Prometheus 暴露指标的话) @@ -58,8 +57,9 @@ $ kubectl apply -f {{< github_file >}}/samples/addons/prometheus.yaml ### 选项 1:指标合并 {#option-1-metrics-merging} 为了简化配置,Istio 可以通过 `prometheus.io` 注解来控制指标的获取。 -他允许 Istio 通过 [Helm `stable/prometheus`](https://github.com/helm/charts/tree/master/stable/prometheus) -的 chart 使用标准配置获取数据,开箱即用。 +这使得 Istio 抓取可以使用标准配置开箱即用,例如 +[Helm `stable/prometheus`](https://github.com/helm/charts/tree/master/stable/prometheus) +Chart 提供的配置。 {{< tip >}} 尽管 `prometheus.io` 并不是 Prometheus 的核心注解, @@ -69,7 +69,7 @@ $ kubectl apply -f {{< github_file >}}/samples/addons/prometheus.yaml 该选项默开启但是允许在[安装](/zh/docs/setup/install/istioctl/)时通过 `--set meshConfig.enablePrometheusMerge=false` 关闭。当开启后, 会将适当的 `prometheus.io` 注解添加到所有的数据平面容器中来设置指标收集。 -如果这些注解已经存在,他们将会被覆盖。使用该选项,Envoy sidecar 将 Istio +如果这些注解已经存在,他们将会被覆盖。使用该选项,Envoy Sidecar 将 Istio 的指标与应用程序的指标合并。合并的指标将由 `:15020/stats/prometheus` 收集。 该选项以纯文本的形式显示所有指标。 diff --git a/content/zh/docs/ops/integrations/zipkin/index.md b/content/zh/docs/ops/integrations/zipkin/index.md index 7dafbc4d3a..bd60479dbd 100644 --- a/content/zh/docs/ops/integrations/zipkin/index.md +++ b/content/zh/docs/ops/integrations/zipkin/index.md @@ -7,25 +7,30 @@ owner: istio/wg-environments-maintainers test: n/a --- -[Zipkin](https://zipkin.io/) 是一个分布式追踪系统。它帮助收集在定位服务架构延迟问题时所需的计时数据。包括数据的收集和查找等特性。 +[Zipkin](https://zipkin.io/) 是一个分布式追踪系统,可用来协助收集在定位服务架构延迟问题时所需的计时数据, +功能包括此数据的收集和查找。 ## 安装 {#installation} ### 方法1:快速开始 {#quick-start} -Istio 提供了一个基本的安装示例来快速启动和运行 Zipkin: +Istio 提供了一个基本的安装示例来快速启动和运行 Zipkin: {{< text bash >}} $ kubectl apply -f {{< github_file >}}/samples/addons/extras/zipkin.yaml {{< /text >}} -通过 kubectl apply -f 将 Zipkin 部署到集群中。仅用于演示,没有针对性能或安全性进行调优。 +通过 `kubectl apply -f` 将 Zipkin 部署到集群中。此示例仅用于演示, +没有针对其性能或安全性进行调优。 ### 方法2:定制化安装 {#customizable-install} -查阅 [Zipkin 文档](https://zipkin.io/) 开始安装。Zipkin 集成 Istio 使用时没有特别的地方需要修改。 +参阅 [Zipkin 文档](https://zipkin.io/)开始安装。Zipkin 集成 Istio 使用时无需进行特殊修改。 -Zipkin 安装完成后,您需要指定 Istio 代理用来向 Deployment 发送追踪数据。可以在安装时候可以通过配置参数 `--set values.global.tracer.zipkin.address=:9411` 指定。更高级配置例如:TLS 配置可以参考 [`ProxyConfig.Tracing`](/zh/docs/reference/config/istio.mesh.v1alpha1/#Tracing) 链接。 +Zipkin 安装完成后,您需要指定 Istio 代理用来向 Deployment 发送追踪数据。 +可以在安装时通过指定参数 `--set values.global.tracer.zipkin.address=:9411` +进行配置。更高级配置例如:TLS 配置可以参考 +[`ProxyConfig.Tracing`](/zh/docs/reference/config/istio.mesh.v1alpha1/#Tracing) 链接。 ## 使用 {#usage}