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

介紹 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 現在稱為 spec,而 currentState 現在稱為 status
  • /minions 已移至 /nodes,且資源類型為 Node
  • 命名空間是必要的(對於所有命名空間資源),並且已從 URL 參數移至路徑:/api/v1beta3/namespaces/{namespace}/{resource_collection}/{resource_name}
  • 所有資源集合的名稱現在都改為小寫 - 請使用 replicationcontrollers,而不是 replicationControllers
  • 若要監看資源的變更,請開啟與集合 URL 的 HTTP 或 Websocket 連線,並提供 ?watch=true URL 參數以及所需的 resourceVersion 參數以從中監看。
  • 容器 entrypoint 已重新命名為 command,而 command 已重新命名為 args
  • 容器、磁碟區和節點資源表示為巢狀映射(例如,resources{cpu:1}),而不是個別欄位,且資源值支援 縮放後綴,而不是固定比例(例如,毫核心)。
  • 重新啟動策略簡單地表示為字串(例如,「Always」),而不是巢狀映射(「always{}」)。
  • 磁碟區 source 已內嵌到 volume 中,而不是巢狀。
  • 主機磁碟區已從 hostDir 變更為 hostPath,以更好地反映它們可以是檔案或目錄

而 API 的最新產生 Swagger 規格在此處

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

有關我們 API 版本控制和轉換方法的更多詳細資訊,請參閱此處

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

我們發現的另一個變更是,隨著 kubectl 中預設 API 版本的變更,除非您指定「--api-version=v1beta1」或更新為 v1beta3 語法,否則使用「-o template」的命令將會中斷。此類變更的範例可在此處查看

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

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

如果您有任何問題,請告訴我們。一如既往,我們在 IRC (#google-containers) 和 github issues 上提供協助。