本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

介紹 Kubernetes API 版本 v1beta3

在過去的幾個月裡,我們一直在努力清理 API(詳情請參閱 https://github.com/GoogleCloudPlatform/kubernetes/issues/1519)。結果是 v1beta3,它被認為是 v1 API 的釋出候選版本。

我們希望您儘快遷移到這個新的 API 版本。v1beta1 和 v1beta2 已棄用,並將在 6 月底,即我們推出 v1 API 後不久移除。

截至最新版本 v0.15.0,v1beta3 是主要的預設 API。我們已更改預設的 kubectl 和客戶端 API 版本以及預設儲存版本(這意味著持久化在 etcd 中的物件將在重寫時從 v1beta1 轉換為 v1beta3)。

您可以檢視 v1beta3 的示例,例如:

https://github.com/GoogleCloudPlatform/kubernetes/tree/master/examples/guestbook/v1beta3

https://github.com/GoogleCloudPlatform/kubernetes/tree/master/examples/walkthrough/v1beta3

https://github.com/GoogleCloudPlatform/kubernetes/tree/master/examples/update-demo/v1beta3

為了幫助過渡,我們還建立了一個轉換工具,並整理了一份重要的不同 API 變更列表。

  • 資源 id 現在稱為 name
  • namelabelsannotations 和其他元資料現在巢狀在一個名為 metadata 的對映中。
  • desiredState 現在稱為 speccurrentState 現在稱為 status
  • /minions 已移至 /nodes,並且資源型別為 Node
  • 名稱空間是必需的(對於所有名稱空間資源),並且已從 URL 引數移至路徑:/api/v1beta3/namespaces/{namespace}/{resource_collection}/{resource_name}
  • 所有資源集合的名稱現在都小寫 - 而不是 replicationControllers,請使用 replicationcontrollers
  • 要監視資源的更改,請開啟到集合 URL 的 HTTP 或 Websocket 連線,並提供 ?watch=true URL 引數以及要監視的 resourceVersion 引數。
  • 容器 entrypoint 已重新命名為 commandcommand 已重新命名為 args
  • 容器、卷和節點資源以巢狀對映(例如,resources{cpu:1})而不是單個欄位表示,並且資源值支援縮放字尾而不是固定比例(例如,毫核)。
  • 重啟策略簡單地表示為字串(例如,“Always”)而不是巢狀對映(“always{}”)。
  • source 已內聯到 volume 中,而不是巢狀。
  • 主機卷已從 hostDir 更改為 hostPath,以更好地反映它們可以是檔案或目錄。

API 的最新生成的 Swagger 規範在此處:

https://kubernetes.club.tw/third_party/swagger-ui/#!/v1beta3

有關我們 API 版本控制方法和過渡的更多詳細資訊,請參見此處:

https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/api.md

我們發現的另一個變化是,隨著 kubectl 中預設 API 版本的更改,使用 “-o template” 的命令將中斷,除非您指定 “--api-version=v1beta1” 或更新到 v1beta3 語法。此類更改的示例可見此處:

https://github.com/GoogleCloudPlatform/kubernetes/pull/6377/files

如果您使用 “-o template”,我建議始終明確指定 API 版本,而不是依賴預設值。我們將來可能會將此設定新增到 kubeconfig 中。

如果您有任何問題,請告訴我們。一如既往,我們可以在 IRC (#google-containers) 和 github issues 上找到。