apiVersion: discovery.k8s.io/v1
import "k8s.io/api/discovery/v1"
EndpointSlice 表示一组服务后端。大多数 EndpointSlice 是由 EndpointSlice 控制器创建的,用于表示 Service 对象选择的 Pod。对于给定的服务,可能存在多个 EndpointSlice 对象,这些对象必须结合在一起才能产生完整的后端集合;你可以通过列出服务命名空间中 kubernetes.io/service-name 标签包含该服务名称的 EndpointSlice,来查找给定服务的所有分片(slice)。
apiVersion: discovery.k8s.io/v1
kind: EndpointSlice
metadata (ObjectMeta)
标准对象的元数据。
addressType (string),必需
addressType 指定此 EndpointSlice 所携带的地址类型。此分片中的所有地址必须是相同的类型。该字段在创建后不可更改。当前支持以下地址类型:* IPv4:表示 IPv4 地址。* IPv6:表示 IPv6 地址。* FQDN:表示完全限定域名(已弃用)。EndpointSlice 控制器仅生成(且 kube-proxy 仅处理)addressType 为 "IPv4" 和 "IPv6" 的分片。“FQDN”类型未定义语义。
可能的枚举值
"FQDN" 表示一个 FQDN。"IPv4" 表示一个 IPv4 地址。"IPv6" 表示一个 IPv6 地址。endpoints ([]Endpoint),必需
原子:将在合并期间被替换
endpoints 是此分片中唯一后端的列表。每个分片最多可包含 1000 个后端。
endpoints.addresses ([]string),必需
集合:合并期间将保留唯一值
此后端的地址。对于 addressType 为 "IPv4" 或 "IPv6" 的 EndpointSlice,这些值是规范格式的 IP 地址。其他 addressType 值的语法和语义未定义。此字段必须至少包含一个地址,且不超过 100 个。由 EndpointSlice 控制器生成的 EndpointSlice 将始终恰好包含 1 个地址。除第一个地址之外的其他地址没有定义语义,kube-proxy 不会处理它们。
endpoints.conditions (EndpointConditions)
conditions 包含有关后端当前状态的信息。
endpoints.conditions.ready (boolean)
ready 指示该后端是否已准备好接收流量,具体取决于管理该后端的系统。nil 值应被解释为“true”。通常,如果后端正在服务且未处于终止状态,则应将其标记为就绪,尽管在某些情况下可以覆盖此设置(例如,当关联的 Service 设置了 publishNotReadyAddresses 标志时)。
endpoints.conditions.serving (boolean)
serving 指示该后端是否能够接收流量,具体取决于管理该后端的系统。对于由 Pod 支持的后端,如果 Pod 的 Ready 状况为 True,EndpointSlice 控制器会将该后端标记为 serving。nil 值应被解释为“true”。
endpoints.conditions.terminating (boolean)
terminating 指示该后端正在终止。nil 值应被解释为“false”。
endpoints.deprecatedTopology (map[string]string)
deprecatedTopology 包含 v1beta1 API 中的拓扑信息。此字段已弃用,并将在删除 v1beta1 API 时(不早于 Kubernetes v1.24)被移除。虽然此字段可以保存值,但它不能通过 v1 API 写入,任何写入它的尝试都将被静默忽略。拓扑信息可以在 zone 和 nodeName 字段中找到。
endpoints.hints (EndpointHints)
hints 包含与如何使用后端相关的信息。
endpoints.hints.forNodes ([]ForNode)
原子:将在合并期间被替换
forNodes 指示在使用拓扑感知路由时应使用此后端的节点。最多可包含 8 个条目。
endpoints.hints.forNodes.name (string),必需
name 表示节点的名称。
endpoints.hints.forZones ([]ForZone)
原子:将在合并期间被替换
forZones 指示在使用拓扑感知路由时应使用此后端的区域。最多可包含 8 个条目。
endpoints.hints.forZones.name (string),必需
name 表示区域的名称。
endpoints.hostname (string)
此后端的主机名。此字段可由后端的使用者用于区分各个后端(例如在 DNS 名称中)。使用相同主机名的多个后端应被视为可互换的(例如 DNS 中的多个 A 记录)。必须是小写并符合 DNS 标签 (RFC 1123) 验证。
endpoints.nodeName (string)
nodeName 表示托管此后端的节点的名称。这可用于确定本地节点的后端。
endpoints.targetRef (ObjectReference)
targetRef 是对表示此后端的 Kubernetes 对象的引用。
endpoints.zone (string)
zone 是此后端所在的区域名称。
ports ([]EndpointPort)
原子:将在合并期间被替换
ports 指定此分片中每个后端暴露的网络端口列表。每个端口必须具有唯一的名称。每个分片最多可包含 100 个端口。服务始终至少有 1 个端口,因此由 EndpointSlice 控制器生成的 EndpointSlice 同样始终至少有 1 个端口。用于其他目的的 EndpointSlice 可能具有空的端口列表。
EndpointPort 表示 EndpointSlice 使用的端口。
ports.port (int32)
port 表示后端的端口号。如果 EndpointSlice 派生自 Kubernetes 服务,则必须将其设置为服务的目标端口。用于其他目的的 EndpointSlice 可能具有 nil 端口。
ports.protocol (string)
protocol 表示此端口的 IP 协议。必须为 UDP、TCP 或 SCTP。默认为 TCP。
可能的枚举值
"SCTP" 是 SCTP 协议。"TCP" 是 TCP 协议。"UDP" 是 UDP 协议。ports.name (string)
name 表示此端口的名称。EndpointSlice 中的所有端口必须具有唯一的名称。如果 EndpointSlice 派生自 Kubernetes 服务,则这对应于 Service.ports[].name。名称必须为空字符串或通过 DNS_LABEL 验证:* 长度不得超过 63 个字符。* 必须由小写字母数字字符或“-”组成。* 必须以字母数字字符开头和结尾。默认为空字符串。
ports.appProtocol (string)
此端口的应用程序协议。这用作提示,供实现为它们理解的协议提供更丰富的功能。此字段遵循标准的 Kubernetes 标签语法。有效值是
未加前缀的协议名称 - 保留给 IANA 标准服务名称(如 RFC-6335 和 https://www.iana.org/assignments/service-names) 中所述)。
Kubernetes 定义的前缀名称
其他协议应使用实现定义的加前缀名称,例如 mycompany.com/my-custom-protocol。
EndpointSliceList 表示端点分片列表。
apiVersion: discovery.k8s.io/v1
kind: EndpointSliceList
metadata (ListMeta)
标准列表元数据。
items ([]EndpointSlice),必需
items 是端点分片列表。
get 读取指定的 EndpointSliceGET /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}
200 (EndpointSlice): OK
401: 未授权
list 列出或监测 EndpointSlice 类型的对象GET /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices
namespace (在路径中): string, 必需
allowWatchBookmarks (in query): boolean
continue (in query): string
fieldSelector (in query): string
labelSelector (in query): string
limit (in query): integer
pretty (在查询中): string
resourceVersion (in query): string
resourceVersionMatch (in query): string
sendInitialEvents (in query): boolean
timeoutSeconds (in query): integer
watch (in query): boolean
200 (EndpointSliceList): OK
401: 未授权
list 列出或监测 EndpointSlice 类型的对象GET /apis/discovery.k8s.io/v1/endpointslices
allowWatchBookmarks (in query): boolean
continue (in query): string
fieldSelector (in query): string
labelSelector (in query): string
limit (in query): integer
pretty (在查询中): string
resourceVersion (in query): string
resourceVersionMatch (in query): string
sendInitialEvents (in query): boolean
timeoutSeconds (in query): integer
watch (in query): boolean
200 (EndpointSliceList): OK
401: 未授权
create 创建一个 EndpointSlicePOST /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices
namespace (在路径中): string, 必需
body: EndpointSlice,必需
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
200 (EndpointSlice): OK
201 (EndpointSlice): 已创建
202 (EndpointSlice): 已接受
401: 未授权
update 替换指定的 EndpointSlicePUT /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}
name (在路径中): string, 必需
EndpointSlice 的名称
namespace (在路径中): string, 必需
body: EndpointSlice,必需
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
200 (EndpointSlice): OK
201 (EndpointSlice): 已创建
401: 未授权
patch 部分更新指定的 EndpointSlicePATCH /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}
name (在路径中): string, 必需
EndpointSlice 的名称
namespace (在路径中): string, 必需
body: Patch, 必需
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
force (in query): boolean
pretty (在查询中): string
200 (EndpointSlice): OK
201 (EndpointSlice): 已创建
401: 未授权
delete 删除一个 EndpointSliceDELETE /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}
name (在路径中): string, 必需
EndpointSlice 的名称
namespace (在路径中): string, 必需
body: DeleteOptions
dryRun (在查询中): string
gracePeriodSeconds (in query): integer
ignoreStoreReadErrorWithClusterBreakingPotential (in query): boolean
pretty (在查询中): string
propagationPolicy (in query): string
200 (Status): 确定
202 (Status): 已接受
401: 未授权
deletecollection 删除 EndpointSlice 集合DELETE /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices
namespace (在路径中): string, 必需
body: DeleteOptions
continue (in query): string
dryRun (在查询中): string
fieldSelector (in query): string
gracePeriodSeconds (in query): integer
ignoreStoreReadErrorWithClusterBreakingPotential (in query): boolean
labelSelector (in query): string
limit (in query): integer
pretty (在查询中): string
propagationPolicy (in query): string
resourceVersion (in query): string
resourceVersionMatch (in query): string
sendInitialEvents (in query): boolean
timeoutSeconds (in query): integer
200 (Status): 确定
401: 未授权
本页面是自动生成的。
如果您打算报告此页面的问题,请在您的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。