API 概述

本節提供 Kubernetes API 的參考資訊。

REST API 是 Kubernetes 的基本架構。所有元件之間的操作和通訊,以及外部使用者命令,都是 API 伺服器處理的 REST API 呼叫。因此,Kubernetes 平臺中的所有內容都被視為 API 物件,並在 API 中有對應的條目。

Kubernetes API 參考 列出了 Kubernetes v1.34 版本的 API。

有關一般背景資訊,請閱讀 Kubernetes API控制對 Kubernetes API 的訪問 描述了客戶端如何向 Kubernetes API 伺服器進行身份驗證,以及其請求如何獲得授權。

API 版本控制

JSON 和 Protobuf 序列化模式遵循相同的模式變更準則。以下描述涵蓋了這兩種格式。

API 版本控制和軟體版本控制是間接相關的。API 和釋出版本控制提案 描述了 API 版本控制與軟體版本控制之間的關係。

不同的 API 版本表示不同的穩定性和支援級別。你可以在 API 變更文件 中找到有關每個級別標準的更多資訊。

以下是每個級別的摘要:

  • Alpha

    • 版本名稱包含 alpha (例如,v1alpha1)。
    • 內建的 alpha API 版本預設停用,必須在 kube-apiserver 配置中顯式啟用才能使用。
    • 軟體可能包含 Bug。啟用某個功能可能會暴露 Bug。
    • 對 alpha API 的支援可能隨時取消,恕不另行通知。
    • API 可能在後續的軟體版本中以不相容的方式更改,恕不另行通知。
    • 由於 Bug 風險增加且缺乏長期支援,該軟體建議僅在短生命週期的測試叢集中使用。
  • Beta

    • 版本名稱包含 beta (例如,v2beta3)。

    • 內建的 beta API 版本預設停用,必須在 kube-apiserver 配置中顯式啟用才能使用(除了 Kubernetes 1.22 之前引入的 API 的 beta 版本,它們預設啟用)。

    • 內建的 beta API 版本從引入到廢棄的最長生命週期為 9 個月或 3 個次要版本(以較長者為準),從廢棄到移除的最長生命週期為 9 個月或 3 個次要版本(以較長者為準)。

    • 該軟體經過充分測試。啟用某個功能被認為是安全的。

    • 對某個功能的支援不會取消,儘管細節可能會改變。

    • 物件的模式和/或語義可能在後續的 beta 或穩定 API 版本中以不相容的方式更改。發生這種情況時,將提供遷移說明。適應後續的 beta 或穩定 API 版本可能需要編輯或重新建立 API 物件,並且可能不直接。遷移可能需要依賴該功能的應用程式停機。

    • 該軟體不建議用於生產環境。後續版本可能會引入不相容的更改。一旦 beta API 版本被廢棄且不再提供服務,就必須使用 beta API 版本才能過渡到後續的 beta 或穩定 API 版本。

  • 穩定

    • 版本名稱為 vX,其中 X 是一個整數。
    • 穩定 API 版本在 Kubernetes 的所有未來主要版本中保持可用,目前沒有計劃對 Kubernetes 進行重大版本修訂以移除穩定 API。

API 組

API 組 使擴充套件 Kubernetes API 變得更容易。API 組在 REST 路徑和序列化物件的 apiVersion 欄位中指定。

Kubernetes 中有幾個 API 組:

  • 核心(也稱為傳統)組位於 REST 路徑 /api/v1。核心組不作為 apiVersion 欄位的一部分指定,例如,apiVersion: v1
  • 命名組位於 REST 路徑 /apis/$GROUP_NAME/$VERSION 並使用 apiVersion: $GROUP_NAME/$VERSION (例如,apiVersion: batch/v1)。你可以在 Kubernetes API 參考 中找到所有支援的 API 組的完整列表。

啟用或停用 API 組

某些資源和 API 組預設啟用。你可以透過在 API 伺服器上設定 --runtime-config 來啟用或停用它們。--runtime-config 標誌接受逗號分隔的 <key>[=<value>] 對,描述 API 伺服器的執行時配置。如果省略 =<value> 部分,則將其視為指定了 =true。例如:

  • 要停用 batch/v1,請設定 --runtime-config=batch/v1=false
  • 要啟用 batch/v2alpha1,請設定 --runtime-config=batch/v2alpha1
  • 要啟用特定版本的 API,例如 storage.k8s.io/v1beta1/csistoragecapacities,請設定 --runtime-config=storage.k8s.io/v1beta1/csistoragecapacities

永續性

Kubernetes 透過將 API 資源寫入 etcd 來儲存其序列化狀態。

下一步