Merge pull request #34595 from tengqm/zh-resync-debug-service
[zh-cn] Resync debug-service page
This commit is contained in:
		
						commit
						fc45c35695
					
				|  | @ -1,5 +1,5 @@ | ||||||
| --- | --- | ||||||
| content_type: concept | content_type: task | ||||||
| title: 调试 Service | title: 调试 Service | ||||||
| weight: 20 | weight: 20 | ||||||
| --- | --- | ||||||
|  | @ -8,12 +8,13 @@ weight: 20 | ||||||
| reviewers: | reviewers: | ||||||
| - thockin | - thockin | ||||||
| - bowei | - bowei | ||||||
| content_type: concept | content_type: task | ||||||
| title: Debug Services | title: Debug Services | ||||||
| weight: 20 | weight: 20 | ||||||
| --> | --> | ||||||
| 
 | 
 | ||||||
| <!-- overview --> | <!-- overview --> | ||||||
|  | 
 | ||||||
| <!-- | <!-- | ||||||
| An issue that comes up rather frequently for new installations of Kubernetes is | An issue that comes up rather frequently for new installations of Kubernetes is | ||||||
| that a Service is not working properly.  You've run your Pods through a | that a Service is not working properly.  You've run your Pods through a | ||||||
|  | @ -21,11 +22,12 @@ Deployment (or other workload controller) and created a Service, but you | ||||||
| get no response when you try to access it.  This document will hopefully help | get no response when you try to access it.  This document will hopefully help | ||||||
| you to figure out what's going wrong. | you to figure out what's going wrong. | ||||||
| --> | --> | ||||||
| 对于新安装的 Kubernetes,经常出现的问题是 Service 无法正常运行。 你已经通过 | 对于新安装的 Kubernetes,经常出现的问题是 Service 无法正常运行。你已经通过 | ||||||
| Deployment(或其他工作负载控制器)运行了 Pod,并创建 Service ,但是 | Deployment(或其他工作负载控制器)运行了 Pod,并创建 Service , | ||||||
| 当你尝试访问它时,没有任何响应。此文档有望对你有所帮助并找出问题所在。 | 但是当你尝试访问它时,没有任何响应。此文档有望对你有所帮助并找出问题所在。 | ||||||
| 
 | 
 | ||||||
| <!-- body --> | <!-- body --> | ||||||
|  | 
 | ||||||
| <!-- | <!-- | ||||||
| ## Running commands in a Pod | ## Running commands in a Pod | ||||||
| 
 | 
 | ||||||
|  | @ -217,11 +219,13 @@ What would happen if you tried to access a non-existent Service?  If | ||||||
| you have another Pod that consumes this Service by name you would get | you have another Pod that consumes this Service by name you would get | ||||||
| something like: | something like: | ||||||
| --> | --> | ||||||
| ## Service 是否存在? | ## Service 是否存在?   {#does-the-service-exist} | ||||||
| 
 | 
 | ||||||
| 细心的读者会注意到我们实际上尚未创建 Service -这是有意而为之。 这一步有时会被遗忘,这是首先要检查的步骤。 | 细心的读者会注意到我们实际上尚未创建 Service —— 这是有意而为之。 | ||||||
|  | 这一步有时会被遗忘,这是首先要检查的步骤。 | ||||||
| 
 | 
 | ||||||
| 那么,如果我尝试访问不存在的 Service 会怎样? 假设你有另一个 Pod 通过名称匹配到 Service ,你将得到类似结果: | 那么,如果我尝试访问不存在的 Service 会怎样?  | ||||||
|  | 假设你有另一个 Pod 通过名称匹配到 Service,你将得到类似结果: | ||||||
| 
 | 
 | ||||||
| ```shell | ```shell | ||||||
| wget -O- hostnames | wget -O- hostnames | ||||||
|  | @ -250,7 +254,7 @@ Error from server (NotFound): services "hostnames" not found | ||||||
| Let's create the Service.  As before, this is for the walk-through - you can | Let's create the Service.  As before, this is for the walk-through - you can | ||||||
| use your own Service's details here. | use your own Service's details here. | ||||||
| --> | --> | ||||||
| 让我们创建 Service。 和以前一样,在这次实践中 - 你可以在此处使用自己的 Service 的内容。 | 让我们创建 Service。 和以前一样,在这次实践中 —— 你可以在此处使用自己的 Service 的内容。 | ||||||
| 
 | 
 | ||||||
| ```shell | ```shell | ||||||
| kubectl expose deployment hostnames --port=80 --target-port=9376 | kubectl expose deployment hostnames --port=80 --target-port=9376 | ||||||
|  | @ -281,7 +285,7 @@ As before, this is the same as if you had started the `Service` with YAML: | ||||||
| --> | --> | ||||||
| 现在你知道了 Service 确实存在。 | 现在你知道了 Service 确实存在。 | ||||||
| 
 | 
 | ||||||
| 同前,此步骤效果与通过 YAML 方式启动 'Service' 一样: | 同前,此步骤效果与通过 YAML 方式启动 `Service` 一样: | ||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| apiVersion: v1 | apiVersion: v1 | ||||||
|  | @ -314,7 +318,6 @@ traffic to `hostnames-*` Pods, these need to be reviewed. | ||||||
| 
 | 
 | ||||||
| Please refer to [Network Policies](/docs/concepts/services-networking/network-policies/) for more details. | Please refer to [Network Policies](/docs/concepts/services-networking/network-policies/) for more details. | ||||||
| --> | --> | ||||||
| 
 |  | ||||||
| ## 是否存在影响目标 Pod 的网络策略入站规则? | ## 是否存在影响目标 Pod 的网络策略入站规则? | ||||||
| 
 | 
 | ||||||
| 如果你部署了任何可能影响到 `hostnames-*` Pod 的传入流量的网络策略入站规则, | 如果你部署了任何可能影响到 `hostnames-*` Pod 的传入流量的网络策略入站规则, | ||||||
|  | @ -330,7 +333,7 @@ name. | ||||||
| 
 | 
 | ||||||
| From a Pod in the same Namespace: | From a Pod in the same Namespace: | ||||||
| --> | --> | ||||||
| ## Service 是否可通过 DNS 名字访问? | ## Service 是否可通过 DNS 名字访问?  {#does-the-service-work-by-dns-name} | ||||||
| 
 | 
 | ||||||
| 通常客户端通过 DNS 名称来匹配到 Service。 | 通常客户端通过 DNS 名称来匹配到 Service。 | ||||||
| 
 | 
 | ||||||
|  | @ -392,9 +395,6 @@ own cluster. | ||||||
| 
 | 
 | ||||||
| You can also try this from a `Node` in the cluster: | You can also try this from a `Node` in the cluster: | ||||||
| 
 | 
 | ||||||
| {{< note >}} |  | ||||||
| 10.0.0.10 is the cluster's DNS Service IP, yours might be different. |  | ||||||
| {{< /note >}} |  | ||||||
| --> | --> | ||||||
| 注意这里的后缀:"default.svc.cluster.local"。"default" 是我们正在操作的命名空间。 | 注意这里的后缀:"default.svc.cluster.local"。"default" 是我们正在操作的命名空间。 | ||||||
| "svc" 表示这是一个 Service。"cluster.local" 是你的集群域,在你自己的集群中可能会有所不同。 | "svc" 表示这是一个 Service。"cluster.local" 是你的集群域,在你自己的集群中可能会有所不同。 | ||||||
|  | @ -402,6 +402,9 @@ You can also try this from a `Node` in the cluster: | ||||||
| 你也可以在集群中的节点上尝试此操作: | 你也可以在集群中的节点上尝试此操作: | ||||||
| 
 | 
 | ||||||
| {{< note >}} | {{< note >}} | ||||||
|  | <!-- | ||||||
|  | 10.0.0.10 is the cluster's DNS Service IP, yours might be different. | ||||||
|  | --> | ||||||
| 10.0.0.10 是集群的 DNS 服务 IP,你的可能有所不同。 | 10.0.0.10 是集群的 DNS 服务 IP,你的可能有所不同。 | ||||||
| {{< /note >}} | {{< /note >}} | ||||||
| 
 | 
 | ||||||
|  | @ -443,7 +446,11 @@ options ndots:5 | ||||||
| <!-- | <!-- | ||||||
| The `nameserver` line must indicate your cluster's DNS `Service`.  This is | The `nameserver` line must indicate your cluster's DNS `Service`.  This is | ||||||
| passed into `kubelet` with the `--cluster-dns` flag. | passed into `kubelet` with the `--cluster-dns` flag. | ||||||
|  | --> | ||||||
|  | `nameserver` 行必须指示你的集群的 DNS Service, | ||||||
|  | 它是通过 `--cluster-dns` 标志传递到 kubelet 的。 | ||||||
| 
 | 
 | ||||||
|  | <!-- | ||||||
| The `search` line must include an appropriate suffix for you to find the | The `search` line must include an appropriate suffix for you to find the | ||||||
| Service name.  In this case it is looking for Services in the local | Service name.  In this case it is looking for Services in the local | ||||||
| Namespace ("default.svc.cluster.local"), Services in all Namespaces | Namespace ("default.svc.cluster.local"), Services in all Namespaces | ||||||
|  | @ -454,22 +461,20 @@ to 6 total).  The cluster suffix is passed into `kubelet` with the | ||||||
| assumed to be "cluster.local".  Your own clusters might be configured | assumed to be "cluster.local".  Your own clusters might be configured | ||||||
| differently, in which case you should change that in all of the previous | differently, in which case you should change that in all of the previous | ||||||
| commands. | commands. | ||||||
| 
 |  | ||||||
| The `options` line must set `ndots` high enough that your DNS client library |  | ||||||
| considers search paths at all.  Kubernetes sets this to 5 by default, which is |  | ||||||
| high enough to cover all of the DNS names it generates. |  | ||||||
| --> | --> | ||||||
| `nameserver` 行必须指示你的集群的 DNS Service, |  | ||||||
| 它是通过 `--cluster-dns` 标志传递到 kubelet 的。 |  | ||||||
| 
 |  | ||||||
| `search` 行必须包含一个适当的后缀,以便查找 Service 名称。 | `search` 行必须包含一个适当的后缀,以便查找 Service 名称。 | ||||||
| 在本例中,它查找本地命名空间(`default.svc.cluster.local`)中的服务和 | 在本例中,它查找本地命名空间(`default.svc.cluster.local`)中的服务和所有命名空间 | ||||||
| 所有命名空间(`svc.cluster.local`)中的服务,最后在集群(`cluster.local`)中查找 | (`svc.cluster.local`)中的服务,最后在集群(`cluster.local`)中查找服务的名称。 | ||||||
| 服务的名称。根据你自己的安装情况,可能会有额外的记录(最多 6 条)。 | 根据你自己的安装情况,可能会有额外的记录(最多 6 条)。 | ||||||
| 集群后缀是通过 `--cluster-domain` 标志传递给 `kubelet` 的。  | 集群后缀是通过 `--cluster-domain` 标志传递给 `kubelet` 的。  | ||||||
| 本文中,我们假定后缀是 “cluster.local”。 | 本文中,我们假定后缀是 “cluster.local”。 | ||||||
| 你的集群配置可能不同,这种情况下,你应该在上面的所有命令中更改它。 | 你的集群配置可能不同,这种情况下,你应该在上面的所有命令中更改它。 | ||||||
| 
 | 
 | ||||||
|  | <!-- | ||||||
|  | The `options` line must set `ndots` high enough that your DNS client library | ||||||
|  | considers search paths at all.  Kubernetes sets this to 5 by default, which is | ||||||
|  | high enough to cover all of the DNS names it generates. | ||||||
|  | --> | ||||||
| `options` 行必须设置足够高的 `ndots`,以便 DNS 客户端库考虑搜索路径。 | `options` 行必须设置足够高的 `ndots`,以便 DNS 客户端库考虑搜索路径。 | ||||||
| 在默认情况下,Kubernetes 将这个值设置为 5,这个值足够高,足以覆盖它生成的所有 DNS 名称。 | 在默认情况下,Kubernetes 将这个值设置为 5,这个值足够高,足以覆盖它生成的所有 DNS 名称。 | ||||||
| 
 | 
 | ||||||
|  | @ -512,7 +517,7 @@ Assuming you have confirmed that DNS works, the next thing to test is whether yo | ||||||
| Service works by its IP address.  From a Pod in your cluster, access the | Service works by its IP address.  From a Pod in your cluster, access the | ||||||
| Service's IP (from `kubectl get` above). | Service's IP (from `kubectl get` above). | ||||||
| --> | --> | ||||||
| ### Service 能够通过 IP 访问么? | ### Service 能够通过 IP 访问么?   {#does-the-service-work-by-ip} | ||||||
| 
 | 
 | ||||||
| 假设你已经确认 DNS 工作正常,那么接下来要测试的是你的 Service 能否通过它的 IP 正常访问。 | 假设你已经确认 DNS 工作正常,那么接下来要测试的是你的 Service 能否通过它的 IP 正常访问。 | ||||||
| 从集群中的一个 Pod,尝试访问 Service 的 IP(从上面的 `kubectl get` 命令获取)。 | 从集群中的一个 Pod,尝试访问 Service 的 IP(从上面的 `kubectl get` 命令获取)。 | ||||||
|  | @ -538,7 +543,8 @@ hostnames-632524106-tlaok | ||||||
| If your Service is working, you should get correct responses.  If not, there | If your Service is working, you should get correct responses.  If not, there | ||||||
| are a number of things that could be going wrong.  Read on. | are a number of things that could be going wrong.  Read on. | ||||||
| --> | --> | ||||||
| 如果 Service 状态是正常的,你应该得到正确的响应。如果没有,有很多可能出错的地方,请继续阅读。 | 如果 Service 状态是正常的,你应该得到正确的响应。 | ||||||
|  | 如果没有,有很多可能出错的地方,请继续阅读。 | ||||||
| 
 | 
 | ||||||
| <!-- | <!-- | ||||||
| ## Is the Service defined correctly? | ## Is the Service defined correctly? | ||||||
|  | @ -547,7 +553,7 @@ It might sound silly, but you should really double and triple check that your | ||||||
| `Service` is correct and matches your `Pod`'s port.  Read back your `Service` | `Service` is correct and matches your `Pod`'s port.  Read back your `Service` | ||||||
| and verify it: | and verify it: | ||||||
| --> | --> | ||||||
| ## Service 的配置是否正确? | ## Service 的配置是否正确?   {#is-the-service-defined-correctly} | ||||||
| 
 | 
 | ||||||
| 这听起来可能很愚蠢,但你应该两次甚至三次检查你的 Service 配置是否正确,并且与你的 Pod 匹配。 | 这听起来可能很愚蠢,但你应该两次甚至三次检查你的 Service 配置是否正确,并且与你的 Pod 匹配。 | ||||||
| 查看你的 Service 配置并验证它: | 查看你的 Service 配置并验证它: | ||||||
|  | @ -614,7 +620,7 @@ actually being selected by the Service. | ||||||
| 
 | 
 | ||||||
| Earlier you saw that the Pods were running.  You can re-check that: | Earlier you saw that the Pods were running.  You can re-check that: | ||||||
| --> | --> | ||||||
| ## Service 有 Endpoints 吗? | ## Service 有 Endpoints 吗?  {#does-the-service-have-any-endpoints} | ||||||
| 
 | 
 | ||||||
| 如果你已经走到了这一步,你已经确认你的 Service 被正确定义,并能通过 DNS 解析。 | 如果你已经走到了这一步,你已经确认你的 Service 被正确定义,并能通过 DNS 解析。 | ||||||
| 现在,让我们检查一下,你运行的 Pod 确实是被 Service 选中的。 | 现在,让我们检查一下,你运行的 Pod 确实是被 Service 选中的。 | ||||||
|  | @ -624,18 +630,25 @@ Earlier you saw that the Pods were running.  You can re-check that: | ||||||
| ```shell | ```shell | ||||||
| kubectl get pods -l app=hostnames | kubectl get pods -l app=hostnames | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
| ```none | ```none | ||||||
| NAME                        READY     STATUS    RESTARTS   AGE | NAME                        READY     STATUS    RESTARTS   AGE | ||||||
| hostnames-632524106-bbpiw   1/1       Running   0          1h | hostnames-632524106-bbpiw   1/1       Running   0          1h | ||||||
| hostnames-632524106-ly40y   1/1       Running   0          1h | hostnames-632524106-ly40y   1/1       Running   0          1h | ||||||
| hostnames-632524106-tlaok   1/1       Running   0          1h | hostnames-632524106-tlaok   1/1       Running   0          1h | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
| <!-- | <!-- | ||||||
| The `-l app=hostnames` argument is a label selector configured on the Service. | The `-l app=hostnames` argument is a label selector configured on the Service. | ||||||
| 
 | 
 | ||||||
| The "AGE" column says that these Pods are about an hour old, which implies that | The "AGE" column says that these Pods are about an hour old, which implies that | ||||||
| they are running fine and not crashing. | they are running fine and not crashing. | ||||||
|  | --> | ||||||
|  | `-l app=hostnames` 参数是在 Service 上配置的标签选择器。 | ||||||
| 
 | 
 | ||||||
|  | “AGE” 列表明这些 Pod 已经启动一个小时了,这意味着它们运行良好,而未崩溃。 | ||||||
|  | 
 | ||||||
|  | <!-- | ||||||
| The "RESTARTS" column says that these pods are not crashing frequently or being | The "RESTARTS" column says that these pods are not crashing frequently or being | ||||||
| restarted.  Frequent restarts could lead to intermittent connectivity issues. | restarted.  Frequent restarts could lead to intermittent connectivity issues. | ||||||
| If the restart count is high, read more about how to [debug pods](/docs/tasks/debug/debug-application/debug-pods). | If the restart count is high, read more about how to [debug pods](/docs/tasks/debug/debug-application/debug-pods). | ||||||
|  | @ -643,19 +656,17 @@ If the restart count is high, read more about how to [debug pods](/docs/tasks/de | ||||||
| Inside the Kubernetes system is a control loop which evaluates the selector of | Inside the Kubernetes system is a control loop which evaluates the selector of | ||||||
| every Service and saves the results into a corresponding Endpoints object. | every Service and saves the results into a corresponding Endpoints object. | ||||||
| --> | --> | ||||||
| `-l app=hostnames` 参数是在 Service 上配置的标签选择器。 |  | ||||||
| 
 |  | ||||||
| "AGE" 列表明这些 Pod 已经启动一个小时了,这意味着它们运行良好,而未崩溃。 |  | ||||||
| 
 |  | ||||||
| "RESTARTS" 列表明 Pod 没有经常崩溃或重启。经常性崩溃可能导致间歇性连接问题。 | "RESTARTS" 列表明 Pod 没有经常崩溃或重启。经常性崩溃可能导致间歇性连接问题。 | ||||||
| 如果重启次数过大,通过[调试 Pod](/zh-cn/docs/tasks/debug/debug-application/debug-pods) | 如果重启次数过大,通过[调试 Pod](/zh-cn/docs/tasks/debug/debug-application/debug-pods) | ||||||
| 了解相关技术。 | 了解相关技术。 | ||||||
| 
 | 
 | ||||||
| 在 Kubernetes 系统中有一个控制回路,它评估每个 Service 的选择算符,并将结果保存到 Endpoints 对象中。 | 在 Kubernetes 系统中有一个控制回路,它评估每个 Service 的选择算符,并将结果保存到 | ||||||
|  | Endpoints 对象中。 | ||||||
| 
 | 
 | ||||||
| ```shell | ```shell | ||||||
| kubectl get endpoints hostnames | kubectl get endpoints hostnames | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
| ``` | ``` | ||||||
| NAME        ENDPOINTS | NAME        ENDPOINTS | ||||||
| hostnames   10.244.0.5:9376,10.244.0.6:9376,10.244.0.7:9376 | hostnames   10.244.0.5:9376,10.244.0.6:9376,10.244.0.7:9376 | ||||||
|  | @ -685,22 +696,23 @@ At the beginning of this walk-through, you verified the Pods themselves. | ||||||
| Let's check again that the Pods are actually working - you can bypass the | Let's check again that the Pods are actually working - you can bypass the | ||||||
| Service mechanism and go straight to the Pods, as listed by the Endpoints | Service mechanism and go straight to the Pods, as listed by the Endpoints | ||||||
| above. | above. | ||||||
| 
 |  | ||||||
| {{< note >}} |  | ||||||
| These commands use the Pod port (9376), rather than the Service port (80). |  | ||||||
| {{< /note >}} |  | ||||||
| 
 |  | ||||||
| From within a Pod: |  | ||||||
| --> | --> | ||||||
| ## Pod 正常工作吗? | ## Pod 工作正常吗?   {#are-the-pods-working} | ||||||
| 
 | 
 | ||||||
| 至此,你知道你的 Service 已存在,并且已匹配到你的Pod。在本实验的开始,你已经检查了 Pod 本身。 | 至此,你知道你的 Service 已存在,并且已匹配到你的Pod。在本实验的开始,你已经检查了 Pod 本身。 | ||||||
| 让我们再次检查 Pod 是否确实在工作 - 你可以绕过 Service 机制并直接转到 Pod,如上面的 Endpoint 所示。 | 让我们再次检查 Pod 是否确实在工作 - 你可以绕过 Service 机制并直接转到 Pod, | ||||||
|  | 如上面的 Endpoints 所示。 | ||||||
| 
 | 
 | ||||||
| {{< note >}} | {{< note >}} | ||||||
|  | <!-- | ||||||
|  | These commands use the Pod port (9376), rather than the Service port (80). | ||||||
|  | --> | ||||||
| 这些命令使用的是 Pod 端口(9376),而不是 Service 端口(80)。 | 这些命令使用的是 Pod 端口(9376),而不是 Service 端口(80)。 | ||||||
| {{< /note >}} | {{< /note >}} | ||||||
| 
 | 
 | ||||||
|  | <!-- | ||||||
|  | From within a Pod: | ||||||
|  | --> | ||||||
| 在 Pod 中运行: | 在 Pod 中运行: | ||||||
| 
 | 
 | ||||||
| ```shell | ```shell | ||||||
|  | @ -741,7 +753,7 @@ small set of mechanisms for providing the Service abstraction.  If your | ||||||
| cluster does not use kube-proxy, the following sections will not apply, and you | cluster does not use kube-proxy, the following sections will not apply, and you | ||||||
| will have to investigate whatever implementation of Services you are using. | will have to investigate whatever implementation of Services you are using. | ||||||
| --> | --> | ||||||
| ## kube-proxy 正常工作吗? | ## kube-proxy 正常工作吗?  {#is-the-kube-proxy-working} | ||||||
| 
 | 
 | ||||||
| 如果你到达这里,则说明你的 Service 正在运行,拥有 Endpoints,Pod 真正在提供服务。 | 如果你到达这里,则说明你的 Service 正在运行,拥有 Endpoints,Pod 真正在提供服务。 | ||||||
| 此时,整个 Service 代理机制是可疑的。让我们一步一步地确认它没问题。 | 此时,整个 Service 代理机制是可疑的。让我们一步一步地确认它没问题。 | ||||||
|  | @ -751,18 +763,19 @@ Service 的默认实现(在大多数集群上应用的)是 kube-proxy。 | ||||||
| 如果你的集群不使用 kube-proxy,则以下各节将不适用,你将必须检查你正在使用的 Service 的实现方式。 | 如果你的集群不使用 kube-proxy,则以下各节将不适用,你将必须检查你正在使用的 Service 的实现方式。 | ||||||
| 
 | 
 | ||||||
| <!-- | <!-- | ||||||
| ## Is the kube-proxy working? | ## Is kube-proxy working? | ||||||
| 
 | 
 | ||||||
| Confirm that `kube-proxy` is running on your Nodes.  Running directly on a | Confirm that `kube-proxy` is running on your Nodes.  Running directly on a | ||||||
| Node, you should get something like the below: | Node, you should get something like the below: | ||||||
| --> | --> | ||||||
| ### kube-proxy 正常运行吗? | ### kube-proxy 正常运行吗?  {#is-kube-proxy working} | ||||||
| 
 | 
 | ||||||
| 确认 `kube-proxy` 正在节点上运行。 在节点上直接运行,你将会得到类似以下的输出: | 确认 `kube-proxy` 正在节点上运行。在节点上直接运行,你将会得到类似以下的输出: | ||||||
| 
 | 
 | ||||||
| ```shell | ```shell | ||||||
| ps auxw | grep kube-proxy | ps auxw | grep kube-proxy | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
| ```none | ```none | ||||||
| root  4194  0.4  0.1 101864 17696 ?    Sl Jul04  25:43 /usr/local/bin/kube-proxy --master=https://kubernetes-master --kubeconfig=/var/lib/kube-proxy/kubeconfig --v=2 | root  4194  0.4  0.1 101864 17696 ?    Sl Jul04  25:43 /usr/local/bin/kube-proxy --master=https://kubernetes-master --kubeconfig=/var/lib/kube-proxy/kubeconfig --v=2 | ||||||
| ``` | ``` | ||||||
|  | @ -826,7 +839,7 @@ Kube-proxy 可以以若干模式之一运行。在上述日志中,`Using iptab | ||||||
| 
 | 
 | ||||||
| In "iptables" mode, you should see something like the following on a Node: | In "iptables" mode, you should see something like the following on a Node: | ||||||
| --> | --> | ||||||
| #### Iptables 模式 | #### Iptables 模式   {#iptables-mode} | ||||||
| 
 | 
 | ||||||
| 在 "iptables" 模式中, 你应该可以在节点上看到如下输出: | 在 "iptables" 模式中, 你应该可以在节点上看到如下输出: | ||||||
| 
 | 
 | ||||||
|  | @ -864,7 +877,7 @@ config (including node-ports and load-balancers). | ||||||
| 
 | 
 | ||||||
| In "ipvs" mode, you should see something like the following on a Node: | In "ipvs" mode, you should see something like the following on a Node: | ||||||
| --> | --> | ||||||
| #### IPVS 模式 | #### IPVS 模式   {#ipvs-mode} | ||||||
| 
 | 
 | ||||||
| 在 "ipvs" 模式中, 你应该在节点下看到如下输出: | 在 "ipvs" 模式中, 你应该在节点下看到如下输出: | ||||||
| 
 | 
 | ||||||
|  | @ -901,7 +914,7 @@ hostnames(`10.0.1.175:80`) has 3 endpoints(`10.244.0.5:9376`, | ||||||
| 
 | 
 | ||||||
| In rare cases, you may be using "userspace" mode.  From your Node: | In rare cases, you may be using "userspace" mode.  From your Node: | ||||||
| --> | --> | ||||||
| #### Userspace 模式 | #### Userspace 模式   {#userspace-mode} | ||||||
| 
 | 
 | ||||||
| 在极少数情况下,你可能会用到 "userspace" 模式。在你的节点上运行: | 在极少数情况下,你可能会用到 "userspace" 模式。在你的节点上运行: | ||||||
| 
 | 
 | ||||||
|  | @ -932,7 +945,7 @@ more time on it here. | ||||||
| Assuming you do see one the above cases, try again to access your Service by | Assuming you do see one the above cases, try again to access your Service by | ||||||
| IP from one of your Nodes: | IP from one of your Nodes: | ||||||
| --> | --> | ||||||
| ### kube-proxy 是否在运行? | ### kube-proxy 是否在执行代理操作?    {#is-kube-proxy-proxying} | ||||||
| 
 | 
 | ||||||
| 假设你确实遇到上述情况之一,请重试从节点上通过 IP 访问你的 Service : | 假设你确实遇到上述情况之一,请重试从节点上通过 IP 访问你的 Service : | ||||||
| 
 | 
 | ||||||
|  | @ -995,9 +1008,9 @@ back to themselves if they try to access their own Service VIP. The | ||||||
| `promiscuous-bridge`. | `promiscuous-bridge`. | ||||||
| 
 | 
 | ||||||
| --> | --> | ||||||
| ### 边缘案例: Pod 无法通过 Service IP 连接到它本身       {#a-pod-fails-to-reach-itself-via-the-service-ip} | ### 边缘案例: Pod 无法通过 Service IP 连接到它本身  {#a-pod-fails-to-reach-itself-via-the-service-ip} | ||||||
| 
 | 
 | ||||||
| 这听起来似乎不太可能,但是确实可能发生,并且应该可行。 | 这听起来似乎不太可能,但是确实可能发生,并且应该可以工作。 | ||||||
| 
 | 
 | ||||||
| 如果网络没有为“发夹模式(Hairpin)”流量生成正确配置, | 如果网络没有为“发夹模式(Hairpin)”流量生成正确配置, | ||||||
| 通常当 `kube-proxy` 以 `iptables` 模式运行,并且 Pod 与桥接网络连接时,就会发生这种情况。 | 通常当 `kube-proxy` 以 `iptables` 模式运行,并且 Pod 与桥接网络连接时,就会发生这种情况。 | ||||||
|  | @ -1097,21 +1110,19 @@ Contact us on | ||||||
| [Forum](https://discuss.kubernetes.io) or | [Forum](https://discuss.kubernetes.io) or | ||||||
| [GitHub](https://github.com/kubernetes/kubernetes). | [GitHub](https://github.com/kubernetes/kubernetes). | ||||||
| --> | --> | ||||||
| ## 寻求帮助 | ## 寻求帮助  {#seek-help} | ||||||
| 
 | 
 | ||||||
| 如果你走到这一步,那么就真的是奇怪的事情发生了。你的 Service 正在运行,有 Endpoints 存在, | 如果你走到这一步,那么就真的是奇怪的事情发生了。你的 Service 正在运行,有 Endpoints 存在, | ||||||
| 你的 Pods 也确实在提供服务。你的 DNS 正常,`iptables` 规则已经安装,`kube-proxy` 看起来也正常。 | 你的 Pods 也确实在提供服务。你的 DNS 正常,`iptables` 规则已经安装,`kube-proxy` 看起来也正常。 | ||||||
| 然而 Service 还是没有正常工作。这种情况下,请告诉我们,以便我们可以帮助调查! | 然而 Service 还是没有正常工作。这种情况下,请告诉我们,以便我们可以帮助调查! | ||||||
| 
 | 
 | ||||||
| 通过 | 通过 [Slack](https://slack.k8s.io/) 或者 [Forum](https://discuss.kubernetes.io) 或者 | ||||||
| [Slack](https://slack.k8s.io/) 或者 | [GitHub](https://github.com/kubernetes/kubernetes) 联系我们。 | ||||||
| [Forum](https://discuss.kubernetes.io) 或者 |  | ||||||
| [GitHub](https://github.com/kubernetes/kubernetes)  |  | ||||||
| 联系我们。 |  | ||||||
| 
 | 
 | ||||||
| ## {{% heading "whatsnext" %}} | ## {{% heading "whatsnext" %}} | ||||||
| 
 | 
 | ||||||
| <!-- | <!-- | ||||||
| Visit [troubleshooting document](/docs/tasks/debug/) for more information. | Visit [troubleshooting document](/docs/tasks/debug/) for more information. | ||||||
| --> | --> | ||||||
| 访问[故障排查文档](/zh-cn/docs/tasks/debug/) 获取更多信息。 | 访问[故障排查文档](/zh-cn/docs/tasks/debug/)获取更多信息。 | ||||||
|  | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue