EndpointSlice
apiVersion: discovery.k8s.io/v1
import "k8s.io/api/discovery/v1"
EndpointSlice
EndpointSlice 表示一組服務端點。大多數 EndpointSlice 由 EndpointSlice 控制器建立,以表示被 Service 物件選中的 Pod。對於一個給定的服務,可能會有多個 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 控制器只生成,並且 kube-proxy 只處理地址型別為“IPv4”和“IPv6”的切片。“FQDN”型別沒有定義任何語義。
endpoints ([]Endpoint),必填
原子性:在合併期間將被替換
endpoints 是此切片中唯一端點的列表。每個切片最多可包含 1000 個端點。
endpoints.addresses ([]string),必填
集合:合併時將保留唯一值
此端點的地址。對於 addressType 為“IPv4”或“IPv6”的 EndpointSlice,值是規範形式的 IP 地址。其他 addressType 值的語法和語義未定義。此欄位必須包含至少一個地址,但不能超過 100 個。EndpointSlice 控制器生成的 EndpointSlice 始終只有一個地址。對於第一個地址之外的附加地址未定義任何語義,並且 kube-proxy 不會檢視它們。
endpoints.conditions (EndpointConditions)
conditions 包含有關端點當前狀態的資訊。
endpoints.conditions.ready (boolean)
ready 表示此端點已準備好接收流量,具體取決於管理此端點的系統。nil 值應解釋為“true”。通常,如果端點正在提供服務且未終止,則應將其標記為就緒,儘管在某些情況下可以覆蓋此行為,例如當關聯的服務設定了 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 個條目。這是一個 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 個埠。服務始終至少有 1 個埠,因此由 EndpointSlice 控制器生成的 EndpointSlice 也始終至少有 1 個埠。用於其他目的的 EndpointSlice 可以有一個空的埠列表。
EndpointPort 表示由 EndpointSlice 使用的埠。
ports.port (int32)
port 表示端點的埠號。如果 EndpointSlice 派生自 Kubernetes 服務,則此值必須設定為服務的 target port。用於其他目的的 EndpointSlice 可以有一個 nil 埠。
ports.protocol (string)
protocol 表示此埠的 IP 協議。必須是 UDP、TCP 或 SCTP。預設為 TCP。
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 定義的帶字首名稱
- 'kubernetes.io/h2c' - 根據 https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- 所述,透過明文進行的 HTTP/2 預知。
- '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 表示端點切片列表
apiVersion: discovery.k8s.io/v1
kind: EndpointSliceList
metadata (ListMeta)
標準列表元資料。
items ([]EndpointSlice),必填
items 是端點切片列表
操作
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: 未授權
本頁面是自動生成的。
如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。