1
1
---
2
- title : 创建一个外部负载均衡器
2
+ title : 创建外部负载均衡器
3
3
content_type : task
4
4
weight : 80
5
5
---
6
6
7
7
<!--
8
- ---
9
8
title: Create an External Load Balancer
10
9
content_type: task
11
10
weight: 80
12
- ---
13
11
-->
14
12
15
13
<!-- overview -->
@@ -19,10 +17,10 @@ This page shows how to create an External Load Balancer.
19
17
-->
20
18
本文展示如何创建一个外部负载均衡器。
21
19
22
- {{< note >}}
23
20
<!--
24
21
This feature is only available for cloud providers or environments which support external load balancers.
25
22
-->
23
+ {{< note >}}
26
24
此功能仅适用于支持外部负载均衡器的云提供商或环境。
27
25
{{< /note >}}
28
26
@@ -33,25 +31,23 @@ that sends traffic to the correct port on your cluster nodes
33
31
_provided your cluster runs in a supported environment and is configured with
34
32
the correct cloud load balancer provider package_.
35
33
-->
36
- 创建服务时,您可以选择自动创建云网络负载均衡器。这提供了一个外部可访问的 IP 地址,可将流量分配到集群节点上的正确端口上 _ 假设集群在支持的环境中运行,并配置了正确的云负载平衡器提供商包_ 。
34
+ 创建服务时,你可以选择自动创建云网络负载均衡器。这提供了一个外部可访问的 IP 地址,
35
+ 可将流量分配到集群节点上的正确端口上
36
+ ( _ 假设集群在支持的环境中运行,并配置了正确的云负载平衡器提供商包_ )。
37
37
38
38
<!--
39
39
For information on provisioning and using an Ingress resource that can give
40
40
services externally-reachable URLs, load balance the traffic, terminate SSL etc.,
41
41
please check the [Ingress](/docs/concepts/services-networking/ingress/)
42
42
documentation.
43
43
-->
44
- 有关如何配置和使用 Ingress 资源为服务提供外部可访问的 URL、负载均衡流量、终止 SSL 等功能,请查看 [ Ingress] ( /docs/concepts/services-networking/ingress/ ) 文档。
45
-
46
-
44
+ 有关如何配置和使用 Ingress 资源为服务提供外部可访问的 URL、负载均衡流量、终止 SSL 等功能,
45
+ 请查看 [ Ingress] ( /zh/docs/concepts/services-networking/ingress/ ) 文档。
47
46
48
47
## {{% heading "prerequisites" %}}
49
48
50
-
51
49
* {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
52
50
53
-
54
-
55
51
<!-- steps -->
56
52
57
53
<!--
@@ -62,7 +58,8 @@ To create an external load balancer, add the following line to your
62
58
-->
63
59
## 配置文件
64
60
65
- 要创建外部负载均衡器,请将以下内容添加到 [ 服务配置文件] ( /docs/concepts/services-networking/service/#loadbalancer ) :
61
+ 要创建外部负载均衡器,请将以下内容添加到
62
+ [ 服务配置文件] ( /zh/docs/concepts/services-networking/service/#loadbalancer ) :
66
63
67
64
``` yaml
68
65
type : LoadBalancer
@@ -71,7 +68,7 @@ To create an external load balancer, add the following line to your
71
68
<!--
72
69
Your configuration file might look like:
73
70
-->
74
- 您的配置文件可能会如下所示 :
71
+ 你的配置文件可能会如下所示 :
75
72
76
73
` ` ` yaml
77
74
apiVersion : v1
@@ -95,7 +92,7 @@ its `--type=LoadBalancer` flag:
95
92
-->
96
93
# # 使用 kubectl
97
94
98
- 您也可以使用 `kubectl expose` 命令及其 `--type=LoadBalancer` 参数创建服务:
95
+ 你也可以使用 `kubectl expose` 命令及其 `--type=LoadBalancer` 参数创建服务:
99
96
100
97
` ` ` bash
101
98
kubectl expose rc example --port=8765 --target-port=9376 \
@@ -112,17 +109,18 @@ For more information, including optional flags, refer to the
112
109
-->
113
110
此命令通过使用与引用资源(在上面的示例的情况下,名为 `example` 的 replication controller)相同的选择器来创建一个新的服务。
114
111
115
- 更多信息(包括更多的可选参数),请参阅 [`kubectl expose` reference](/docs/reference/generated/kubectl/kubectl-commands/#expose)。
112
+ 更多信息(包括更多的可选参数),请参阅
113
+ [`kubectl expose` 指南](/docs/reference/generated/kubectl/kubectl-commands/#expose)。
116
114
117
115
<!--
118
116
# # Finding your IP address
119
117
120
118
You can find the IP address created for your service by getting the service
121
119
information through `kubectl` :
122
120
-->
123
- # # 找到您的 IP 地址
121
+ # # 找到你的 IP 地址
124
122
125
- 您可以通过 `kubectl` 获取服务信息,找到为您的服务创建的 IP 地址:
123
+ 你可以通过 `kubectl` 获取服务信息,找到为你的服务创建的 IP 地址:
126
124
127
125
` ` ` bash
128
126
kubectl describe services example-service
@@ -154,28 +152,29 @@ The IP address is listed next to `LoadBalancer Ingress`.
154
152
-->
155
153
IP 地址列在 `LoadBalancer Ingress` 旁边。
156
154
157
- {{< note >}}
158
155
<!--
159
156
If you are running your service on Minikube, you can find the assigned IP address and port with :
160
157
-->
161
- **注意:** 如果您在 Minikube 上运行服务,您可以通过以下命令找到分配的 IP 地址和端口:
162
- {{< /note >}}
158
+ {{< note >}}
159
+ 如果你在 Minikube 上运行服务,你可以通过以下命令找到分配的 IP 地址和端口:
160
+
163
161
` ` ` bash
164
162
minikube service example-service --url
165
163
` ` `
164
+ {{< /note >}}
166
165
167
166
<!--
168
167
# # Preserving the client source IP
169
- -->
170
- # # 保留客户端源 IP
171
168
172
- <!--
173
169
Due to the implementation of this feature, the source IP seen in the target
174
170
container is *not the original source IP* of the client. To enable
175
171
preservation of the client IP, the following fields can be configured in the
176
172
service spec (supported in GCE/Google Kubernetes Engine environments) :
177
173
-->
178
- 由于此功能的实现,目标容器中看到的源 IP 将 *不是客户端的原始源 IP*。要启用保留客户端 IP,可以在服务的 spec 中配置以下字段(支持 GCE/Google Kubernetes Engine 环境):
174
+ # # 保留客户端源 IP
175
+
176
+ 由于此功能的实现,目标容器中看到的源 IP 将 *不是客户端的原始源 IP*。
177
+ 要启用保留客户端 IP,可以在服务的 spec 中配置以下字段(支持 GCE/Google Kubernetes Engine 环境):
179
178
180
179
<!--
181
180
* `service.spec.externalTrafficPolicy` - denotes if this Service desires to route
@@ -186,7 +185,11 @@ load-spreading. Local preserves the client source IP and avoids a second hop
186
185
for LoadBalancer and NodePort type services, but risks potentially imbalanced
187
186
traffic spreading.
188
187
-->
189
- * `service.spec.externalTrafficPolicy` - 表示此服务是否希望将外部流量路由到节点本地或集群范围的端点。有两个可用选项:Cluster(默认)和 Local。Cluster 隐藏了客户端源 IP,可能导致第二跳到另一个节点,但具有良好的整体负载分布。Local 保留客户端源 IP 并避免 LoadBalancer 和 NodePort 类型服务的第二跳,但存在潜在的不均衡流量传播风险。
188
+ * `service.spec.externalTrafficPolicy` - 表示此服务是否希望将外部流量路由到节点本地或集群范围的端点。
189
+ 有两个可用选项:Cluster(默认)和 Local。
190
+ Cluster 隐藏了客户端源 IP,可能导致第二跳到另一个节点,但具有良好的整体负载分布。
191
+ Local 保留客户端源 IP 并避免 LoadBalancer 和 NodePort 类型服务的第二跳,
192
+ 但存在潜在的不均衡流量传播风险。
190
193
191
194
<!--
192
195
* `service.spec.healthCheckNodePort` - specifies the health check nodePort
@@ -198,8 +201,11 @@ user-specified `healthCheckNodePort` value if specified by the client. It only h
198
201
effect when `type` is set to LoadBalancer and `externalTrafficPolicy` is set
199
202
to Local.
200
203
-->
201
-
202
- * `service.spec.healthCheckNodePort` - 指定服务的 healthcheck nodePort(数字端口号)。如果未指定 `healthCheckNodePort`,服务控制器从集群的 NodePort 范围内分配一个端口。您可以通过设置 API 服务器的命令行选项 `--service-node-port-range` 来配置上述范围。它将会使用用户指定的 `healthCheckNodePort` 值(如果被客户端指定)。仅当 `type` 设置为 LoadBalancer 并且 `externalTrafficPolicy` 设置为 Local 时才生效。
204
+ * `service.spec.healthCheckNodePort` - 指定服务的 healthcheck nodePort(数字端口号)。
205
+ 如果未指定 `healthCheckNodePort`,服务控制器从集群的 NodePort 范围内分配一个端口。
206
+ 你可以通过设置 API 服务器的命令行选项 `--service-node-port-range` 来配置上述范围。
207
+ 它将会使用用户指定的 `healthCheckNodePort` 值(如果被客户端指定)。
208
+ 仅当 `type` 设置为 LoadBalancer 并且 `externalTrafficPolicy` 设置为 Local 时才生效。
203
209
204
210
<!--
205
211
Setting `externalTrafficPolicy` to Local in the Service configuration file
@@ -224,18 +230,20 @@ spec:
224
230
225
231
<!--
226
232
# # Garbage Collecting Load Balancers
227
- -->
228
- # # 垃圾收集负载均衡器
229
233
230
- <!--
231
234
In usual case, the correlating load balancer resources in cloud provider should
232
235
be cleaned up soon after a LoadBalancer type Service is deleted. But it is known
233
236
that there are various corner cases where cloud resources are orphaned after the
234
237
associated Service is deleted. Finalizer Protection for Service LoadBalancers was
235
238
introduced to prevent this from happening. By using finalizers, a Service resource
236
239
will never be deleted until the correlating load balancer resources are also deleted.
237
240
-->
238
- 在通常情况下,应在删除 LoadBalancer 类型服务后立即清除云提供商中的相关负载均衡器资源。但是,众所周知,在删除关联的服务后,云资源被孤立的情况很多。引入了针对服务负载均衡器的终结器保护,以防止这种情况发生。通过使用终结器,在删除相关的负载均衡器资源之前,也不会删除服务资源。
241
+ # # 回收负载均衡器
242
+
243
+ 在通常情况下,应在删除 LoadBalancer 类型服务后立即清除云提供商中的相关负载均衡器资源。
244
+ 但是,众所周知,在删除关联的服务后,云资源被孤立的情况很多。
245
+ 引入了针对服务负载均衡器的终结器保护,以防止这种情况发生。
246
+ 通过使用终结器,在删除相关的负载均衡器资源之前,也不会删除服务资源。
239
247
240
248
<!--
241
249
Specifically, if a Service has `type` LoadBalancer, the service controller will attach
@@ -244,25 +252,18 @@ The finalizer will only be removed after the load balancer resource is cleaned u
244
252
This prevents dangling load balancer resources even in corner cases such as the
245
253
service controller crashing.
246
254
-->
247
- 具体来说,如果服务具有 `type` LoadBalancer,则服务控制器将附加一个名为 `service.kubernetes.io/load-balancer-cleanup` 的终结器。
255
+ 具体来说,如果服务具有 `type` LoadBalancer,则服务控制器将附加一个名为
256
+ ` service.kubernetes.io/load-balancer-cleanup` 的终结器。
248
257
仅在清除负载均衡器资源后才能删除终结器。
249
258
即使在诸如服务控制器崩溃之类的极端情况下,这也可以防止负载均衡器资源悬空。
250
259
251
- <!--
252
- This feature is beta and enabled by default since Kubernetes v1.16. You can also
253
- enable it in v1.15 (alpha) via the [feature gate](/docs/reference/command-line-tools-reference/feature-gates/)
254
- ` ServiceLoadBalancerFinalizer` .
255
- -->
256
- 自 Kubernetes v1.16 起,此功能为 beta 版本并默认启用。您也可以通过[功能开关](/docs/reference/command-line-tools-reference/feature-gates/)`ServiceLoadBalancerFinalizer` 在 v1.15 (alpha)中启用它。
257
-
258
260
<!--
259
261
# # External Load Balancer Providers
260
- -->
261
- # # 外部负载均衡器提供商
262
262
263
- <!--
264
263
It is important to note that the datapath for this functionality is provided by a load balancer external to the Kubernetes cluster.
265
264
-->
265
+ # # 外部负载均衡器提供商
266
+
266
267
请务必注意,此功能的数据路径由 Kubernetes 集群外部的负载均衡器提供。
267
268
268
269
<!--
@@ -272,7 +273,11 @@ pods. The Kubernetes service controller automates the creation of the external l
272
273
firewall rules (if needed) and retrieves the external IP allocated by the cloud provider and populates it in the service
273
274
object.
274
275
-->
275
- 当服务 `type` 设置为 LoadBalancer 时,Kubernetes 向集群中的 pod 提供的功能等同于 `type` 等于 ClusterIP,并通过使用 Kubernetes pod 的条目对负载均衡器(从外部到 Kubernetes)进行编程来扩展它。 Kubernetes 服务控制器自动创建外部负载均衡器、健康检查(如果需要)、防火墙规则(如果需要),并获取云提供商分配的外部 IP 并将其填充到服务对象中。
276
+ 当服务 `type` 设置为 LoadBalancer 时,Kubernetes 向集群中的 Pod 提供的功能等同于
277
+ ` type` 等于 ClusterIP,并通过使用 Kubernetes pod 的条目对负载均衡器(从外部到 Kubernetes)
278
+ 进行编程来扩展它。
279
+ Kubernetes 服务控制器自动创建外部负载均衡器、健康检查(如果需要)、防火墙规则(如果需要),
280
+ 并获取云提供商分配的外部 IP 并将其填充到服务对象中。
276
281
277
282
<!--
278
283
# # Caveats and Limitations when preserving source IPs
@@ -282,21 +287,25 @@ kube-proxy rules which would correctly balance across all endpoints.
282
287
-->
283
288
# # 保留源 IP 时的注意事项和限制
284
289
285
- GCE/AWS 负载均衡器不为其目标池提供权重。对于旧的 LB kube-proxy 规则来说,这不是一个问题,它可以在所有端点之间正确平衡。
290
+ GCE/AWS 负载均衡器不为其目标池提供权重。
291
+ 对于旧的 LB kube-proxy 规则来说,这不是一个问题,它可以在所有端点之间正确平衡。
286
292
287
293
<!--
288
294
With the new functionality, the external traffic is not equally load balanced across pods, but rather
289
295
equally balanced at the node level (because GCE/AWS and other external LB implementations do not have the ability
290
296
for specifying the weight per node, they balance equally across all target nodes, disregarding the number of
291
297
pods on each node).
292
298
-->
293
- 使用新功能,外部流量不会在 pod 之间平均负载,而是在节点级别平均负载(因为 GCE/AWS 和其他外部 LB 实现无法指定每个节点的权重,因此它们的平衡跨所有目标节点,并忽略每个节点上的 pod 数量)。
299
+ 使用新功能,外部流量不会在 pod 之间平均负载,而是在节点级别平均负载
300
+ (因为 GCE/AWS 和其他外部 LB 实现无法指定每个节点的权重,
301
+ 因此它们的平衡跨所有目标节点,并忽略每个节点上的 Pod 数量)。
294
302
295
303
<!--
296
304
We can, however, state that for NumServicePods << NumNodes or NumServicePods >> NumNodes, a fairly close-to-equal
297
305
distribution will be seen, even without weights.
298
306
-->
299
- 但是,我们可以声明,对于 NumServicePods << NumNodes 或 NumServicePods >> NumNodes 时,即使没有权重,也会看到接近相等的分布。
307
+ 但是,我们可以声明,对于 `NumServicePods << NumNodes` 或 `NumServicePods >> NumNodes` 时,
308
+ 即使没有权重,也会看到接近相等的分布。
300
309
301
310
<!--
302
311
Once the external load balancers provide weights, this functionality can be added to the LB programming path.
@@ -307,6 +316,5 @@ Internal pod to pod traffic should behave similar to ClusterIP services, with eq
307
316
一旦外部负载平衡器提供权重,就可以将此功能添加到 LB 编程路径中。
308
317
*未来工作:1.4 版本不提供权重支持,但可能会在将来版本中添加*
309
318
310
- 内部 pod 到 pod 的流量应该与 ClusterIP 服务类似,所有 pod 的概率相同。
311
-
319
+ 内部 Pod 到 Pod 的流量应该与 ClusterIP 服务类似,所有 Pod 的概率相同。
312
320
0 commit comments