EndpointSlice

EndpointSlice 代表一组服务端点。

apiVersion: discovery.k8s.io/v1

import "k8s.io/api/discovery/v1"

EndpointSlice

EndpointSlice 表示一组服务端点。大多数 EndpointSlice 由 EndpointSlice 控制器创建,用于表示被 Service 对象选中的 Pod。对于一个给定的服务,可能存在多个 EndpointSlice 对象,这些对象必须被组合在一起以产生完整的端点集合; 你可以通过在服务的命名空间中列出 kubernetes.io/service-name 标签包含 Service 名称的 EndpointSlices 来找到给定 Service 的所有 slices。


  • apiVersion:discovery.k8s.io/v1

  • kind:EndpointSlice

  • metadata (ObjectMeta)

    标准的对象元数据。

  • addressType (string), 必需

    addressType 指定当前 EndpointSlice 携带的地址类型。一个 EndpointSlice 只能携带同一类型的地址。 EndpointSlice 对象创建完成后不可以再更改 addressType 字段。 目前支持的地址类型为:

    • IPv4:表示 IPv4 地址。
    • IPv6:表示 IPv6 地址。
    • FQDN:表示完全限定域名。
    • (已弃用)EndpointSlice 控制器仅生成地址类型为 "IPv4" 和 "IPv6" 的切片, 且 kube-proxy 也仅处理这些类型的切片。对于 "FQDN" 类型,未定义其语义。
  • endpoints ([]Endpoint), 必需

    原子性:合并期间将被替换

    endpoints 是当前 EndpointSlice 中一组唯一的端点。每个 EndpointSlice 最多可以包含 1000 个端点。

    端点是实现某 Service 的一个逻辑“后端”。

    • endpoints.addresses ([]string), 必需

      集合:不重复的值在合并期间会被保留

      本端点的地址。对于地址类型为 "IPv4" 或 "IPv6" 的 EndpointSlices, 值是规范形式的 IP 地址。其他地址类型值的语法和语义未定义。 这必须包含至少一个地址但不超过 100 个。由 EndpointSlice 控制器生成的 EndpointSlices 将始终只有 1 个地址。对于第一个之后的额外地址,未定义其语义, 并且 kube-proxy 不会查看它们。

    • endpoints.conditions (EndpointConditions)

      conditions 包含和本端点当前状态有关的信息。

      EndpointConditions 是端点的当前状况。

      • endpoints.conditions.ready (boolean)

        ready 说明此端点已经准备好根据相关的系统映射接收流量。nil 值应解释为 "true"。 通常,如果 endpoint 正在服务且未终止,则应将其标记为 ready, 尽管在某些情况下可以覆盖此设置,例如当关联的 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 是关于应该如何使用某端点的提示信息。

      EndpointHints 提供应该如何使用某端点的提示信息。

      • endpoints.hints.forNodes ([]ForNode)

        原子性:合并期间将被替换

        forNodes 表示在使用拓扑感知路由时,此端点应由哪个(些)节点消费。 最多可能包含 8 个条目。这是一个 Alpha 级别特性,仅在启用了 PreferSameTrafficDistribution 特性门控时使用。

        ForNode 提供关于哪个节点应调用此端点的信息。

        • endpoints.hints.forNodes.name (string),必需

          name 表示节点的名称。

      • endpoints.hints.forZones ([]ForZone)

        原子性:合并期间将被替换

        forZones 表示在使用拓扑感知路由时,该端点应由哪个(些)区域消费。 最多可能包含 8 个条目。

        ForZone 指示应该由哪些可用区调度此端点。

        • endpoints.hints.forZones.name (string), 必需

          name 代表可用区的名称。

    • endpoints.hostname (string)

      此端点的主机名称。端点的使用者可以通过此字段区分各个端点(例如,通过 DNS 域名)。 使用同一主机名称的多个端点应被视为可替换(例如,DNS 中的多个 A 记录)。 必须为小写字母,并且需要通过 DNS Label (RFC 1123) 验证。

    • endpoints.nodeName (string)

      nodeName 是托管此端点的 Node 的名称,使用 nodeName 可以决定 Node 本地有哪些端点。

    • endpoints.targetRef (ObjectReference)

      targetRef 是对代表此端点的 Kubernetes 对象的引用。

    • endpoints.zone (string)

      zone 是此端点所在的可用区(Zone)的名称。

  • ports ([]EndpointPort)

    原子性:合并期间会被替代

    ports 列出了当前 EndpointSlice 中各个端点所暴露的网络端口。每个端口的名称不得重复。 每个切片最多可能包含 100 个端口。Service 总是至少有 1 个端口,因此由 EndpointSlice 控制器生成的 EndpointSlices 同样总是至少有 1 个端口。用于其他目的的 EndpointSlices 可能有一个空的 ports 列表。

    EndpointPort 是 EndpointSlice 使用的端口。

    • ports.port (int32)

      port 表示端点的端口号。如果 EndpointSlice 是从 Kubernetes 服务派生的, 这必须设置为服务的目标端口。用于其他目的的 EndpointSlices 可能有一个 nil 端口。

    • ports.protocol (string)

      protocol 表示此端口的 IP 协议。必须为 UDP、TCP 或 SCTP。默认为 TCP。

    • ports.name (string)

      name 表示此端口的名称。EndpointSlice 中所有端口的名称都不得重复。 如果 EndpointSlice 是基于 Kubernetes Service 创建的, 那么此端口的名称和 Service.ports[].name 字段的值一致。默认为空字符串。 名称必须是空字符串,或者必须通过 DNS_LABEL 验证:

      • 最多包含 63 个字符。
      • 必须包含英文小写字母或'-'。
      • 必须以字母开头并以字母结尾。
    • ports.appProtocol (string)

      此端口的应用层协议。字段值被用作提示,允许协议实现为其所理解的协议提供更丰富的行为。 此字段遵循标准的 Kubernetes 标签句法。有效的取值是:

EndpointSliceList

EndpointSliceList 是 EndpointSlice 的列表。


  • apiVersion:discovery.k8s.io/v1

  • kind:EndpointSliceList

  • metadata (ListMeta)

    标准的列表元数据

  • items ([]EndpointSlice), 必需

    items 是 EndpointSlice 列表

操作


get 读取指定的 EndpointSlice

HTTP 请求

GET /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}

参数

  • name (路径参数):string, 必需

    EndpointSlice 的名称

  • namespace (路径参数):string, 必需

    namespace

  • pretty (查询参数):string

    pretty

响应

200 (EndpointSlice):OK

401:Unauthorized

list 列举或监测 EndpointSlice 类别的对象

HTTP 请求

GET /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices

参数

  • namespace (路径参数):string, 必需

    namespace

  • continue (查询参数):string

    continue

  • limit (查询参数):integer

    limit

  • pretty (查询参数):string

    pretty

  • watch (查询参数):boolean

    watch

响应

200 (EndpointSliceList): OK

401:Unauthorized

list 列举或监测 EndpointSlice 类别的对象

HTTP 请求

GET /apis/discovery.k8s.io/v1/endpointslices

参数

  • continue (查询参数):string

    continue

  • limit (查询参数):integer limit
  • pretty (查询参数):string pretty
  • watch (查询参数):boolean

    watch

响应

200 (EndpointSliceList):OK

401:Unauthorized

create 创建 EndpointSlice

HTTP 请求

POST /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices

参数

  • dryRun (查询参数):string

    dryRun

  • pretty (查询参数):string

    pretty

响应

200 (EndpointSlice):OK

201 (EndpointSlice):Created

202 (EndpointSlice):Accepted

401:Unauthorized

update 替换指定的 EndpointSlice

HTTP 请求

PUT /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}

参数

  • name (路径参数):string, 必需

    EndpointSlice 的名称

  • dryRun (查询参数):string

    dryRun

  • pretty (查询参数):string

    pretty

响应

200 (EndpointSlice):OK

201 (EndpointSlice):Created

401:Unauthorized

patch 部分更新指定的 EndpointSlice

HTTP 请求

PATCH /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}

参数

  • name (路径参数): string, 必需

    EndpointSlice 的名称

  • namespace (路径参数):string, 必需

    namespace

  • bodyPatch, 必需

  • dryRun (查询参数):string

    dryRun

  • force (查询参数):boolean

    force

  • pretty (查询参数):string

    pretty

响应

200 (EndpointSlice):OK

201 (EndpointSlice):Created

401:Unauthorized

delete 删除 EndpointSlice

HTTP 请求

DELETE /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}

参数

  • name (路径参数):string, 必需

    EndpointSlice 的名称

  • dryRun (查询参数):string

    dryRun

  • pretty (查询参数):string

    pretty

响应

200 (Status):OK

202 (Status):Accepted

401:Unauthorized

deletecollection 删除 EndpointSlice 的集合

HTTP 请求

DELETE /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices

参数

  • continue (查询参数):string

    continue

  • dryRun (查询参数):string

    dryRun

  • limit (查询参数):integer

    limit

  • pretty (查询参数):string

    pretty

响应

200 (Status):OK

401:Unauthorized

最后修改 April 24, 2025 at 9:54 PM PST: [zh-cn]sync endpoint-slice-v1.md (925ea3a88e)