Kubernetes API

2022-04-28 10:03 更新

API

Kubernetes 控制面 的核心是 API 服務器。 API 服務器負責提供 HTTP API,以供用戶、集群中的不同部分和集群外部組件相互通信。

Kubernetes API 使你可以查詢和操縱 Kubernetes API 中對象(例如:Pod、Namespace、ConfigMap 和 Event)的狀態(tài)。

大部分操作都可以通過 kubectl 命令行接口或 類似 kubeadm 這類命令行工具來執(zhí)行, 這些工具在背后也是調(diào)用 API。不過,你也可以使用 REST 調(diào)用來訪問這些 API。

如果你正在編寫程序來訪問 Kubernetes API,可以考慮使用 客戶端庫之一。

OpenAPI 規(guī)范

完整的 API 細節(jié)是用 OpenAPI 來表述的。

OpenAPI V2

Kubernetes API 服務器通過 ?/openapi/v2? 端點提供聚合的 OpenAPI v2 規(guī)范。 你可以按照下表所給的請求頭部,指定響應的格式:

頭部 可選值 說明
Accept-Encoding gzip 不指定此頭部也是可以的
Accept application/com.github.proto-openapi.spec.v2@v1.0+protobuf 主要用于集群內(nèi)部
application/json 默認值
* 提供application/json

OpenAPI v2 查詢請求的合法頭部值

Kubernetes 為 API 實現(xiàn)了一種基于 Protobuf 的序列化格式,主要用于集群內(nèi)部通信。 關于此格式的詳細信息,可參考 Kubernetes Protobuf 序列化 設計提案。每種模式對應的接口描述語言(IDL)位于定義 API 對象的 Go 包中。

OpenAPI V3

FEATURE STATE: Kubernetes v1.23 [alpha]

Kubernetes v1.23 提供將其 API 以 OpenAPI v3 形式發(fā)布的初始支持;這一功能特性處于 Alpha 狀態(tài),默認被禁用。 你可以通過為 kube-apiserver 組件啟用 ?OpenAPIV3 ?特性門控來啟用此 Alpha 特性。

特性被啟用時,Kubernetes API 服務器會在端點 ?/openapi/v3/apis/<group>/<version>? 提供按 Kubernetes 組版本聚合的 OpenAPI v3 規(guī)范。 請參閱下表了解可接受的請求頭部。

頭部 可選值 說明
Accept-Encoding gzip 不提供此頭部也是可接受的
Accept application/com.github.proto-openapi.spec.v3@v1.0+protobuf 主要用于集群內(nèi)部使用
application/json 默認
*  application/json 形式返回

發(fā)現(xiàn)端點 ?/openapi/v3? 被提供用來查看可用的所有組、版本列表。 此列表僅返回 JSON。

API 變更 

任何成功的系統(tǒng)都要隨著新的使用案例的出現(xiàn)和現(xiàn)有案例的變化來成長和變化。 為此,Kubernetes 的功能特性設計考慮了讓 Kubernetes API 能夠持續(xù)變更和成長的因素。 Kubernetes 項目的目標是 不要 引發(fā)現(xiàn)有客戶端的兼容性問題,并在一定的時期內(nèi) 維持這種兼容性,以便其他項目有機會作出適應性變更。

一般而言,新的 API 資源和新的資源字段可以被頻繁地添加進來。 刪除資源或者字段則要遵從 API 廢棄策略。

Kubernetes 對維護達到正式發(fā)布(GA)階段的官方 API 的兼容性有著很強的承諾, 通常這一 API 版本為 v1。此外,Kubernetes 在可能的時候還會保持 Beta API 版本的兼容性:如果你采用了 Beta API,你可以繼續(xù)在集群上使用該 API, 即使該功能特性已進入穩(wěn)定期也是如此。

Note:
盡管 Kubernetes 也努力為 Alpha API 版本維護兼容性,在有些場合兼容性是無法做到的。 如果你使用了任何 Alpha API 版本,需要在升級集群時查看 Kubernetes 發(fā)布說明, 以防 API 的確發(fā)生變更。

API 擴展 

有兩種途徑來擴展 Kubernetes API:

  1. 你可以使用自定義資源 來以聲明式方式定義 API 服務器如何提供你所選擇的資源 API。
  2. 你也可以選擇實現(xiàn)自己的 聚合層 來擴展 Kubernetes API。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號