本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
介紹 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.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 上提供協助。