Endpoint Slices

FEATURE STATE: Kubernetes v1.16feature-state-alpha.txtThis feature is currently in a alpha state, meaning:

  • The version names contain alpha (e.g. v1alpha1).
  • Might be buggy. Enabling the feature may expose bugs. Disabled by default.
  • Support for feature may be dropped at any time without notice.
  • The API may change in incompatible ways in a later software release without notice.
  • Recommended for use only in short-lived testing clusters, due to increased risk of bugs and lack of long-term support.

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

Endpoint Slice 资源

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

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

  1. apiVersion: discovery.k8s.io/v1alpha1
  2. kind: EndpointSlice
  3. metadata:
  4. name: example-abc
  5. labels:
  6. kubernetes.io/service-name: example
  7. addressType: IP
  8. ports:
  9. - name: http
  10. protocol: TCP
  11. port: 80
  12. endpoints:
  13. - addresses:
  14. - "10.1.2.3"
  15. - "2001:db8::1234:5678"
  16. conditions:
  17. ready: true
  18. hostname: pod-1
  19. topology:
  20. kubernetes.io/hostname: node-1
  21. topology.kubernetes.io/zone: us-west2-a

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

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

动机

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

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

接下来

反馈

此页是否对您有帮助?

感谢反馈。如果您有一个关于如何使用 Kubernetes 的特定的、需要答案的问题,可以访问Stack Overflow.在 GitHub 仓库上登记新的问题报告问题或者提出改进建议.