@@ -21,8 +21,8 @@ _EndpointSlices_ provide a simple way to track network endpoints within a
21
21
Kubernetes cluster. They offer a more scalable and extensible alternative to
22
22
Endpoints.
23
23
-->
24
- _ 端点切片 (EndpointSlices)_ 提供了一种简单的方法来跟踪 Kubernetes 集群中的网络端点
25
- (network endpoints)。 它们为 Endpoints 提供了一种可伸缩和可拓展的替代方案 。
24
+ ** 端点切片 (EndpointSlices)** 提供了一种简单的方法来跟踪 Kubernetes 集群中的网络端点(network endpoints)。
25
+ 它们为 Endpoints 提供了一种可扩缩和可拓展的替代方案 。
26
26
27
27
<!-- body -->
28
28
@@ -39,10 +39,9 @@ network endpoints.
39
39
-->
40
40
## 动机 {#motivation}
41
41
42
- Endpoints API 提供了在 Kubernetes 跟踪网络端点的一种简单而直接的方法。
43
- 不幸的是,随着 Kubernetes 集群和 {{< glossary_tooltip text="服务" term_id="service" >}}
44
- 逐渐开始为更多的后端 Pods 处理和发送请求,原来的 API 的局限性变得越来越明显。
45
- 最重要的是那些因为要处理大量网络端点而带来的挑战。
42
+ Endpoints API 提供了在 Kubernetes 中跟踪网络端点的一种简单而直接的方法。遗憾的是,随着 Kubernetes
43
+ 集群和{{< glossary_tooltip text="服务" term_id="service" >}}逐渐开始为更多的后端 Pod 处理和发送请求,
44
+ 原来的 API 的局限性变得越来越明显。最重要的是那些因为要处理大量网络端点而带来的挑战。
46
45
47
46
<!--
48
47
Since all network endpoints for a Service were stored in a single Endpoints
@@ -59,26 +58,26 @@ EndpointSlice 能够帮助你缓解这一问题,
59
58
还能为一些诸如拓扑路由这类的额外功能提供一个可扩展的平台。
60
59
61
60
<!--
62
- ## Endpoint Slice resources {#endpointslice-resource}
61
+ ## EndpointSlice resources {#endpointslice-resource}
63
62
64
63
In Kubernetes, an EndpointSlice contains references to a set of network
65
64
endpoints. The control plane automatically creates EndpointSlices
66
65
for any Kubernetes Service that has a {{< glossary_tooltip text="selector"
67
66
term_id="selector" >}} specified. These EndpointSlices include
68
- references to any Pods that match the Service selector. EndpointSlices group
67
+ references to all the Pods that match the Service selector. EndpointSlices group
69
68
network endpoints together by unique combinations of protocol, port number, and
70
- Service name.
69
+ Service name.
71
70
The name of a EndpointSlice object must be a valid
72
71
[DNS subdomain name](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names).
73
72
74
73
As an example, here's a sample EndpointSlice resource for the `example`
75
74
Kubernetes Service.
76
75
-->
77
- ## Endpoint Slice 资源 {#endpointslice-resource}
76
+ ## EndpointSlice 资源 {#endpointslice-resource}
78
77
79
78
在 Kubernetes 中,` EndpointSlice ` 包含对一组网络端点的引用。
80
- 指定选择器后控制面会自动为设置了 {{< glossary_tooltip text="选择算符" term_id="selector" >}}
81
- 的 Kubernetes Service 创建 EndpointSlice。
79
+ 控制面会自动为设置了 {{< glossary_tooltip text="选择算符" term_id="selector" >}}的
80
+ Kubernetes Service 创建 EndpointSlice。
82
81
这些 EndpointSlice 将包含对与 Service 选择算符匹配的所有 Pod 的引用。
83
82
EndpointSlice 通过唯一的协议、端口号和 Service 名称将网络端点组织在一起。
84
83
EndpointSlice 的名称必须是合法的
@@ -100,7 +99,7 @@ ports:
100
99
port : 80
101
100
endpoints :
102
101
- addresses :
103
- - " 10.1.2.3"
102
+ - " 10.1.2.3"
104
103
conditions :
105
104
ready : true
106
105
hostname : pod-1
@@ -111,7 +110,7 @@ endpoints:
111
110
<!--
112
111
By default, the control plane creates and manages EndpointSlices to have no
113
112
more than 100 endpoints each. You can configure this with the
114
- ` -max-endpoints-per-slice`
113
+ ` -- max-endpoints-per-slice`
115
114
{{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}}
116
115
flag, up to a maximum of 1000.
117
116
@@ -125,20 +124,20 @@ improvement for services with large numbers of endpoints.
125
124
的 `--max-endpoints-per-slice` 标志设置此值,最大值为 1000。
126
125
127
126
当涉及如何路由内部流量时,EndpointSlice 可以充当
128
- {{< glossary_tooltip term_id="kube-proxy" text="kube-proxy" >}}
127
+ {{< glossary_tooltip term_id="kube-proxy" text="kube-proxy" >}}
129
128
的决策依据。
130
129
启用该功能后,在服务的端点数量庞大时会有可观的性能提升。
131
130
132
131
<!--
133
- # # Address Types
132
+ # ## Address types
134
133
135
134
EndpointSlices support three address types :
136
135
137
136
* IPv4
138
137
* IPv6
139
138
* FQDN (Fully Qualified Domain Name)
140
139
-->
141
- # # 地址类型
140
+ # ## 地址类型
142
141
143
142
EndpointSlice 支持三种地址类型:
144
143
@@ -157,7 +156,6 @@ The three conditions are `ready`, `serving`, and `terminating`.
157
156
EndpointSlice API 存储了可能对使用者有用的、有关端点的状况。
158
157
这三个状况分别是 `ready`、`serving` 和 `terminating`。
159
158
160
-
161
159
<!--
162
160
# ### Ready
163
161
@@ -171,7 +169,7 @@ Services will always have the `ready` condition set to `true`.
171
169
# ### Ready(就绪)
172
170
173
171
` ready` 状况是映射 Pod 的 `Ready` 状况的。
174
- 处于运行中的 Pod,它的 `Ready` 状况被设置为 `True`,应该将此 EndpointSlice 状况也设置为 `true`。
172
+ 对于处于运行中的 Pod,它的 `Ready` 状况被设置为 `True`,应该将此 EndpointSlice 状况也设置为 `true`。
175
173
出于兼容性原因,当 Pod 处于终止过程中,`ready` 永远不会为 `true`。
176
174
消费者应参考 `serving` 状况来检查处于终止中的 Pod 的就绪情况。
177
175
该规则的唯一例外是将 `spec.publishNotReadyAddresses` 设置为 `true` 的 Service。
@@ -180,15 +178,15 @@ Services will always have the `ready` condition set to `true`.
180
178
<!--
181
179
# ### Serving
182
180
183
- {{< feature-state for_k8s_version="v1.20 " state="alpha " >}}
181
+ {{< feature-state for_k8s_version="v1.22 " state="beta " >}}
184
182
185
183
` serving` is identical to the `ready` condition, except it does not account for terminating states.
186
184
Consumers of the EndpointSlice API should check this condition if they care about pod readiness while
187
185
the pod is also terminating.
188
186
-->
189
187
# ### Serving(服务中)
190
188
191
- {{< feature-state for_k8s_version="v1.20 " state="alpha " >}}
189
+ {{< feature-state for_k8s_version="v1.22 " state="beta " >}}
192
190
193
191
` serving` 状况与 `ready` 状况相同,不同之处在于它不考虑终止状态。
194
192
如果 EndpointSlice API 的使用者关心 Pod 终止时的就绪情况,就应检查此状况。
@@ -205,27 +203,26 @@ for terminating pods independent of the existing semantics for `ready`.
205
203
尽管 `serving` 与 `ready` 几乎相同,但是它是为防止破坏 `ready` 的现有含义而增加的。
206
204
如果对于处于终止中的端点,`ready` 可能是 `true`,那么对于现有的客户端来说可能是有些意外的,
207
205
因为从始至终,Endpoints 或 EndpointSlice API 从未包含处于终止中的端点。
208
- 出于这个原因,`ready` 对于处于终止中的端点 _总是_ `false`,
206
+ 出于这个原因,`ready` 对于处于终止中的端点 **总是** `false`,
209
207
并且在 v1.20 中添加了新的状况 `serving`,以便客户端可以独立于 `ready`
210
208
的现有语义来跟踪处于终止中的 Pod 的就绪情况。
211
209
{{< /note >}}
212
210
213
211
<!--
214
212
# ### Terminating
215
213
216
- {{< feature-state for_k8s_version="v1.20 " state="alpha " >}}
214
+ {{< feature-state for_k8s_version="v1.22 " state="beta " >}}
217
215
218
216
` Terminating` is a condition that indicates whether an endpoint is terminating.
219
217
For pods, this is any pod that has a deletion timestamp set.
220
218
-->
221
219
# ### Terminating(终止中)
222
220
223
- {{< feature-state for_k8s_version="v1.20 " state="alpha " >}}
221
+ {{< feature-state for_k8s_version="v1.22 " state="beta " >}}
224
222
225
223
` Terminating` 是表示端点是否处于终止中的状况。
226
224
对于 Pod 来说,这是设置了删除时间戳的 Pod。
227
225
228
-
229
226
<!--
230
227
# ## Topology information {#topology}
231
228
@@ -257,8 +254,8 @@ the dedicated fields `nodeName` and `zone`.
257
254
258
255
<!--
259
256
Setting arbitrary topology fields on the `endpoint` field of an `EndpointSlice`
260
- resource has been deprecated and is not supported in the v1 API.
261
- Instead, the v1 API supports setting individual `nodeName` and `zone` fields.
257
+ resource has been deprecated and is not supported in the v1 API.
258
+ Instead, the v1 API supports setting individual `nodeName` and `zone` fields.
262
259
These fields are automatically translated between API versions. For example, the
263
260
value of the `"topology.kubernetes.io/zone"` key in the `topology` field in
264
261
the v1beta1 API is accessible as the `zone` field in the v1 API.
@@ -281,7 +278,7 @@ entities or controllers managing additional sets of EndpointSlices.
281
278
-->
282
279
# ## 管理 {#management}
283
280
284
- 通常,控制面(尤其是端点切片的 {{< glossary_tooltip text="控制器" term_id="controller" >}})
281
+ 通常,控制面(尤其是端点切片的{{< glossary_tooltip text="控制器" term_id="controller" >}})
285
282
会创建和管理 EndpointSlice 对象。EndpointSlice 对象还有一些其他使用场景,
286
283
例如作为服务网格(Service Mesh)的实现。
287
284
这些场景都会导致有其他实体或者控制器负责管理额外的 EndpointSlice 集合。
@@ -296,10 +293,10 @@ The endpoint slice controller sets `endpointslice-controller.k8s.io` as the valu
296
293
for this label on all EndpointSlices it manages. Other entities managing
297
294
EndpointSlices should also set a unique value for this label.
298
295
-->
299
- 为了确保多个实体可以管理 EndpointSlice 而且不会相互产生干扰,Kubernetes 定义了
300
- {{< glossary_tooltip term_id="label" text="标签" >}}
301
- ` endpointslice.kubernetes.io/managed-by` ,用来标明哪个实体在管理某个
302
- EndpointSlice。 端点切片控制器会在自己所管理的所有 EndpointSlice 上将该标签值设置为
296
+ 为了确保多个实体可以管理 EndpointSlice 而且不会相互产生干扰,
297
+ Kubernetes 定义了 {{< glossary_tooltip term_id="label" text="标签" >}}
298
+ ` endpointslice.kubernetes.io/managed-by` ,用来标明哪个实体在管理某个 EndpointSlice。
299
+ 端点切片控制器会在自己所管理的所有 EndpointSlice 上将该标签值设置为
303
300
` endpointslice-controller.k8s.io` 。
304
301
管理 EndpointSlice 的其他实体也应该为此标签设置一个唯一值。
305
302
@@ -355,8 +352,8 @@ will occur if an Endpoints resource has multiple subsets or includes endpoints
355
352
with multiple IP families (IPv4 and IPv6). A maximum of 1000 addresses per
356
353
subset will be mirrored to EndpointSlices.
357
354
-->
358
- 每个 Endpoints 资源可能会被翻译到多个 EndpointSlices 中去。
359
- 当 Endpoints 资源中包含多个子网或者包含多个 IP 地址族 (IPv4 和 IPv6)的端点时,
355
+ 每个 Endpoints 资源可能会被转译到多个 EndpointSlices 中去。
356
+ 当 Endpoints 资源中包含多个子网或者包含多个 IP 协议族 (IPv4 和 IPv6)的端点时,
360
357
就有可能发生这种状况。
361
358
每个子网最多有 1000 个地址会被镜像到 EndpointSlice 中。
362
359
0 commit comments