端点切片

EndpointSlice 表示一组服务端点。

apiVersion: discovery.k8s.io/v1

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

端点切片

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


  • apiVersion: discovery.k8s.io/v1

  • kind: EndpointSlice

  • metadata (ObjectMeta)

    标准对象的元数据。

  • addressType (string),必填

    addressType 指定此 EndpointSlice 所携带的地址类型。此切片中的所有地址都必须是相同的类型。此字段创建后不可变。当前支持以下地址类型:* IPv4:表示 IPv4 地址。* IPv6:表示 IPv6 地址。* FQDN:表示完全限定域名。(已弃用) EndpointSlice 控制器仅生成 addressType 为 "IPv4" 和 "IPv6" 的切片,并且 kube-proxy 也仅处理这些切片。"FQDN" 类型未定义任何语义。

  • endpoints ([]Endpoint),必填

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

    endpoints 是此切片中唯一端点的列表。每个切片最多可包含 1000 个端点。

    Endpoint 表示实现服务的单个逻辑“后端”。

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

      集合:合并期间将保留唯一值

      此端点的地址。对于 addressType 为 "IPv4" 或 "IPv6" 的 EndpointSlice,这些值是规范形式的 IP 地址。其他 addressType 值的语法和语义未定义。此字段必须至少包含一个地址,但不能超过 100 个。EndpointSlice 控制器生成的 EndpointSlice 将始终只包含 1 个地址。除了第一个地址之外,其他地址没有定义任何语义,kube-proxy 也不会查看它们。

    • endpoints.conditions (EndpointConditions)

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

      EndpointConditions 表示端点的当前状态。

      • endpoints.conditions.ready (boolean)

        ready 表示根据管理该端点的系统,此端点已准备好接收流量。nil 值应解释为 "true"。通常,如果端点正在提供服务且未终止,则应标记为 ready,但在某些情况下可能会被覆盖,例如当关联的 Service 设置了 publishNotReadyAddresses 标志时。

      • endpoints.conditions.serving (boolean)

        serving 表示根据管理该端点的系统,此端点能够接收流量。对于由 Pod 支持的端点,如果 Pod 的 Ready Condition 为 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 表示托管此端点的节点的名称。这可用于确定节点的本地端点。

    • endpoints.targetRef (ObjectReference)

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

    • endpoints.zone (string)

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

  • ports ([]EndpointPort)

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

    ports 指定此切片中每个端点公开的网络端口列表。每个端口必须具有唯一的名称。每个切片最多可包含 100 个端口。Service 总是至少包含 1 个端口,因此 EndpointSlice 控制器生成的 EndpointSlice 也总是至少包含 1 个端口。用于其他目的的 EndpointSlice 可以具有空的 ports 列表。

    EndpointPort 表示 EndpointSlice 使用的端口

    • ports.port (int32)

      port 表示端点的端口号。如果 EndpointSlice 是从 Kubernetes Service 派生的,则此字段必须设置为 Service 的目标端口。用于其他目的的 EndpointSlice 可以具有 nil 端口。

    • ports.protocol (string)

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

    • ports.name (string)

      name 表示此端口的名称。EndpointSlice 中的所有端口必须具有唯一的名称。如果 EndpointSlice 是从 Kubernetes Service 派生的,则此字段对应于 Service.ports[].name。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,必填

    命名空间

  • pretty (查询参数):string

    pretty

响应

200 (EndpointSlice): OK

401: 未授权

list 列出或监听 EndpointSlice 对象

HTTP 请求

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

参数

响应

200 (EndpointSliceList): OK

401: 未授权

list 列出或监听 EndpointSlice 对象

HTTP 请求

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

参数

响应

200 (EndpointSliceList): OK

401: 未授权

create 创建一个 EndpointSlice

HTTP 请求

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

参数

响应

200 (EndpointSlice): OK

201 (EndpointSlice): 已创建

202 (EndpointSlice): 已接受

401: 未授权

update 替换指定的 EndpointSlice

HTTP 请求

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

参数

响应

200 (EndpointSlice): OK

201 (EndpointSlice): 已创建

401: 未授权

patch 部分更新指定的 EndpointSlice

HTTP 请求

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

参数

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

    EndpointSlice 的名称

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

    命名空间

  • body: Patch,必填

  • dryRun (查询参数):string

    dryRun

  • fieldManager (查询参数):string

    fieldManager

  • fieldValidation (查询参数):string

    fieldValidation

  • force (查询参数):boolean

    force

  • pretty (查询参数):string

    pretty

响应

200 (EndpointSlice): OK

201 (EndpointSlice): 已创建

401: 未授权

delete 删除一个 EndpointSlice

HTTP 请求

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

参数

响应

200 (Status): OK

202 (Status): 已接受

401: 未授权

deletecollection 删除 EndpointSlice 集合

HTTP 请求

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

参数

响应

200 (Status): OK

401: 未授权

此页面是自动生成的。

如果您计划报告此页面存在问题,请在 Issue 描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

最后修改于 2025 年 4 月 24 日太平洋标准时间 9:14:v1.33 的 Markdown API 参考 (b84ec30bbb)