
- Kubernetes 教程
- Kubernetes - 首頁
- Kubernetes - 概述
- Kubernetes - 架構
- Kubernetes - 設定
- Kubernetes - 映象
- Kubernetes - 作業
- Kubernetes - 標籤與選擇器
- Kubernetes - 名稱空間
- Kubernetes - 節點
- Kubernetes - 服務
- Kubernetes - Pod
- Kubernetes - 複製控制器
- Kubernetes - 副本集
- Kubernetes - 部署
- Kubernetes - 卷
- Kubernetes - 金鑰
- Kubernetes - 網路策略
- 高階 Kubernetes
- Kubernetes - API
- Kubernetes - Kubectl
- Kubernetes - Kubectl 命令
- Kubernetes - 建立應用程式
- Kubernetes - 應用程式部署
- Kubernetes - 自動伸縮
- Kubernetes - 儀表盤設定
- Kubernetes - 監控
- Kubernetes 有用資源
- Kubernetes - 快速指南
- Kubernetes - 有用資源
- Kubernetes - 討論
Kubernetes - API
Kubernetes API 作為系統宣告式配置模式的基礎。Kubectl 命令列工具可用於建立、更新、刪除和獲取 API 物件。Kubernetes API 充當 Kubernetes 不同元件之間的通訊器。
向 Kubernetes 新增 API
向 Kubernetes 新增新的 API 將為 Kubernetes 新增新功能,從而增強 Kubernetes 的功能。但是,與此同時,它也會增加系統的成本和可維護性。為了在成本和複雜性之間取得平衡,為此定義了幾套規則。
要新增的 API 應該對超過 50% 的使用者有用。Kubernetes 中沒有其他方法可以實現該功能。特殊情況會在 Kubernetes 社群會議上討論,然後新增 API。
API 更改
為了增強 Kubernetes 的能力,系統會不斷引入更改。Kubernetes 團隊這樣做是為了向 Kubernetes 新增功能,而不會刪除或影響系統的現有功能。
為了演示一般過程,這裡有一個(假設的)示例:
使用者將 Pod 物件 POST 到 /api/v7beta1/...
JSON 被反序列化為 v7beta1.Pod 結構
將預設值應用於 v7beta1.Pod
將 v7beta1.Pod 轉換為 api.Pod 結構
驗證 api.Pod,並將任何錯誤返回給使用者
將 api.Pod 轉換為 v6.Pod(因為 v6 是最新的穩定版本)
將 v6.Pod 序列化為 JSON 並寫入 etcd
現在我們已經儲存了 Pod 物件,使用者可以使用任何受支援的 API 版本獲取該物件。例如:
使用者從 /api/v5/... 獲取 Pod
從 etcd 讀取 JSON 並將其反序列化為 v6.Pod 結構
將預設值應用於 v6.Pod
將 v6.Pod 轉換為 api.Pod 結構
將 api.Pod 轉換為 v5.Pod 結構
將 v5.Pod 序列化為 JSON 併發送給使用者
此過程的含義是必須謹慎且向後相容地進行 API 更改。
API 版本控制
為了更容易支援多個結構,Kubernetes 支援多個 API 版本,每個版本位於不同的 API 路徑,例如 /api/v1 或 /apsi/extensions/v1beta1
Kubernetes 的版本控制標準在多個標準中定義。
Alpha 級別
此版本包含 alpha(例如 v1alpha1)
此版本可能存在 bug;啟用的版本可能存在 bug
隨時可能取消對 bug 的支援。
建議僅用於短期測試,因為可能並非一直都提供支援。
Beta 級別
版本名稱包含 beta(例如 v2beta3)
程式碼已完全測試,啟用的版本應該穩定。
不會取消對該功能的支援;可能會有少量更改。
由於後續版本中可能存在不相容的更改,因此建議僅用於非關鍵業務用途。
穩定級別
版本名稱為 vX,其中 X 為整數。
功能的穩定版本將在許多後續版本中出現在已釋出的軟體中。