本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
介紹 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
。 name
、labels
、annotations
和其他元資料現在巢狀在一個名為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.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 上找到。