端点切片(Endpoint Slices)

FEATURE STATE: Kubernetes v1.17 [beta]

端点切片(Endpoint Slices) 提供了一种简单的方法来跟踪 Kubernetes 集群中的网络端点 (network endpoints)。它们为 Endpoints 提供了一种可伸缩和可拓展的替代方案。

Endpoint Slice 资源

在 Kubernetes 中,EndpointSlice 包含对一组网络端点的引用。 指定选择器后,EndpointSlice 控制器会自动为 Kubernetes 服务创建 EndpointSlice。 这些 EndpointSlice 将包含对与服务选择器匹配的所有 Pod 的引用。EndpointSlice 通过唯一的服务和端口组合将网络端点组织在一起。

例如,这里是 Kubernetes服务 example 的示例 EndpointSlice 资源。

apiVersion: discovery.k8s.io/v1beta1
kind: EndpointSlice
metadata:
  name: example-abc
  labels:
    kubernetes.io/service-name: example
addressType: IPv4
ports:
  - name: http
    protocol: TCP
    port: 80
endpoints:
  - addresses:
    - "10.1.2.3"
    conditions:
      ready: true
    hostname: pod-1
    topology:
      kubernetes.io/hostname: node-1
      topology.kubernetes.io/zone: us-west2-a

默认情况下,由 EndpointSlice 控制器管理的 Endpoint Slice 将有不超过 100 个端点。 低于此比例时,Endpoint Slices 应与 Endpoints 和服务进行 1:1 映射,并具有相似的性能。

当涉及如何路由内部流量时,Endpoint Slices 可以充当 kube-proxy 的真实来源。 启用该功能后,在服务的 endpoints 规模庞大时会有可观的性能提升。

地址类型

EndpointSlice 支持三种地址类型:

  • IPv4
  • IPv6
  • FQDN (完全合格的域名)

动机

Endpoints API 提供了一种简单明了的方法在 Kubernetes 中跟踪网络端点。 不幸的是,随着 Kubernetes 集群与服务的增长,该 API 的局限性变得更加明显。 最值得注意的是,这包含了扩展到更多网络端点的挑战。

由于服务的所有网络端点都存储在单个 Endpoints 资源中, 因此这些资源可能会变得很大。 这影响了 Kubernetes 组件(尤其是主控制平面)的性能,并在 Endpoints 发生更改时导致大量网络流量和处理。 Endpoint Slices 可帮助您缓解这些问题并提供可扩展的 附加特性(例如拓扑路由)平台。

接下来

最后修改 July 31, 2020 at 1:57 PM PST: [zh] Fix links in concepts section (9f7414e73)