端点切片
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 个端点。
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"。通常,如果端点正在提供服务且未终止,则应标记为 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 功能开关时使用。
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 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 标签语法。合法值可以是:
未加前缀的协议名称 - 保留给 IANA 标准服务名称(根据 RFC-6335 和 https://www.iana.org/assignments/service-names))。
Kubernetes 定义的带前缀的名称
- 'kubernetes.io/h2c' - 根据 https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- 的描述,明文上的 HTTP/2 prior knowledge。
- 'kubernetes.io/ws' - 根据 https://www.rfc-editor.org/rfc/rfc6455 的描述,明文上的 WebSocket。
- 'kubernetes.io/wss' - 根据 https://www.rfc-editor.org/rfc/rfc6455 的描述,TLS 上的 WebSocket。
其他协议应使用实现定义的带前缀的名称,例如 mycompany.com/my-custom-protocol。
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}
参数
响应
200 (EndpointSlice): OK
401: 未授权
list
列出或监听 EndpointSlice 对象
HTTP 请求
GET /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices
参数
namespace (路径参数):string,必填
allowWatchBookmarks (查询参数):boolean
continue (查询参数):string
fieldSelector (查询参数):string
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数):boolean
timeoutSeconds (查询参数):integer
watch (查询参数):boolean
响应
200 (EndpointSliceList): OK
401: 未授权
list
列出或监听 EndpointSlice 对象
HTTP 请求
GET /apis/discovery.k8s.io/v1/endpointslices
参数
allowWatchBookmarks (查询参数):boolean
continue (查询参数):string
fieldSelector (查询参数):string
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数):boolean
timeoutSeconds (查询参数):integer
watch (查询参数):boolean
响应
200 (EndpointSliceList): OK
401: 未授权
create
创建一个 EndpointSlice
HTTP 请求
POST /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
替换指定的 EndpointSlice
HTTP 请求
PUT /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
部分更新指定的 EndpointSlice
HTTP 请求
PATCH /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}
参数
name (路径参数):string,必填
EndpointSlice 的名称
namespace (路径参数):string,必填
body: Patch,必填
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
force (查询参数):boolean
pretty (查询参数):string
响应
200 (EndpointSlice): OK
201 (EndpointSlice): 已创建
401: 未授权
delete
删除一个 EndpointSlice
HTTP 请求
DELETE /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}
参数
name (路径参数):string,必填
EndpointSlice 的名称
namespace (路径参数):string,必填
body: DeleteOptions
dryRun (查询参数):string
gracePeriodSeconds (查询参数):integer
ignoreStoreReadErrorWithClusterBreakingPotential (查询参数):boolean
pretty (查询参数):string
propagationPolicy (查询参数):string
响应
200 (Status): OK
202 (Status): 已接受
401: 未授权
deletecollection
删除 EndpointSlice 集合
HTTP 请求
DELETE /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices
参数
namespace (路径参数):string,必填
body: DeleteOptions
continue (查询参数):string
dryRun (查询参数):string
fieldSelector (查询参数):string
gracePeriodSeconds (查询参数):integer
ignoreStoreReadErrorWithClusterBreakingPotential (查询参数):boolean
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
propagationPolicy (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数):boolean
timeoutSeconds (查询参数):integer
响应
200 (Status): OK
401: 未授权
此页面是自动生成的。
如果您计划报告此页面存在问题,请在 Issue 描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。