启用 EndpointSlices
本页提供启用 Kubernetes EndpointSlice 的总览。
准备开始
你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 如果你还没有集群,你可以通过 Minikube 构建一 个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:
要获知版本信息,请输入 kubectl version
.
介绍
EndpointSlice (端点切片)为 Kubernetes Endpoints 提供了可伸缩和可扩展的替代方案。 它们建立在 Endpoints 提供的功能基础之上,并以可伸缩的方式进行扩展。 当 Service 具有大量(>100)网络端点时,它们将被分成多个较小的 EndpointSlice 资源, 而不是单个大型 Endpoints 资源。
启用 EndpointSlice
FEATURE STATE: Kubernetes v1.17 [beta]
说明:
EndpointSlice 资源旨在解决较早资源:Endpoints 中的缺点。一些 Kubernetes 组件和第三方应用程序 继续使用并依赖 Endpoints。既然情况如此,应该将 EndpointSlices 视为集群中 Endpoints 的补充,而不是 彻底替代。
Kubernetes 中的 EndpointSlice 功能包含若干不同组件。它们中的大部分都是 默认被启用的:
- EndpointSlice API:EndpointSlice 隶属于
discovery.k8s.io/v1beta1
API。 此 API 处于 Beta 阶段,从 Kubernetes 1.17 开始默认被启用。 下面列举的所有组件都依赖于此 API 被启用。 EndpointSlice 控制器:此 控制器 为 Service 维护 EndpointSlice 及其引用的 Pods。 此控制器通过
EndpointSlice
特性门控控制。自从 Kubernetes 1.18 起, 该特性门控默认被启用。EndpointSliceMirroring 控制器:此 控制器 将自定义的 Endpoints 映射为 EndpointSlice。 控制器受
EndpointSlice
特性门控控制。该特性门控自 1.19 开始被默认启用。- kube-proxy:当 kube-proxy 被配置为使用 EndpointSlice 时,它会支持更大数量的 Service 端点。 此功能在 Linux 上受
EndpointSliceProxying
特性门控控制;在 Windows 上受WindowsEndpointSliceProxying
特性门控控制。 在 Linux 上,从 Kubernetes 1.19 版本起自动启用。目前尚未在 Windows 节点 上默认启用。 要在 Windows 节点上配置 kube-proxy 使用 EndpointSlice,你需要为 kube-proxy 启用WindowsEndpointSliceProxying
特性门控。
API 字段
EndpointSlice API 中的某些字段有对应的特性门控控制。
EndpointSliceNodeName
特性门控控制对nodeName
字段的访问。这是默认情况下禁用的 Alpha 功能。EndpointSliceTerminating
特性门控控制对serving
和terminating
状况字段的访问。这是默认情况下禁用的 Alpha 功能。
使用 EndpointSlice
在集群中完全启用 EndpointSlice 的情况下,你应该看到对应于每个 Endpoints 资源的 EndpointSlice 资源。除了支持现有的 Endpoints 功能外, EndpointSlices 将允许集群中网络端点更好的可伸缩性和可扩展性。