作者:Rob Scott
翻译:Bach(才云)
校对:星空下的文仔(才云)、bot(才云)
**EndpointSlice 是一个新 API,它提供了 Endpoint API 可伸缩和可拓展的替代方案。**EndpointSlice 会跟踪 Service Pod 的 IP 地址、端口、readiness 和拓扑信息。
在 Kubernetes v1.19 中,此功能将默认启用:从 EndpointSlice (不是 Endpoint)中读取 kube-proxy。尽管这个更改看起来并不起眼,但实际上它能让大型集群的可伸缩性得到显着提高。另外,它还与 Kubernetes 未来版本中的重要新功能有关,例如 Topology Aware Routing。
K8sMeetup
Endpoint API 可伸缩性限制
如果使用 Endpoint API,Service 只有一个 Endpoint 资源。**这意味着它需要为 Service 的每个 Pod 都存储好 IP 地址和端口(网络端点),这需要大量的 API 资源。**另外,kube-proxy 会在每个节点上运行,并监控 Endpoint 资源的任何更新。如果 Endpoint 资源中有一个端口发生更改,那么整个对象都会分发到 kube-proxy 的每个实例。
**Endpoint API 另一个局限是,它会限制跟踪 Service 的网络端点数量。**一般存储在 etcd 中的对象默认大小限制为 1.5MB。在某些情况下,它会将 Endpoint 资源限制为 5000 个 Pod IP。