這篇文章已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
已棄用的 API 在 1.16 版本中移除:您需要知道的事項
隨著 Kubernetes API 的演進,API 會定期重新組織或升級。當 API 演進時,舊的 API 會被棄用並最終移除。
v1.16 版本將停止服務以下已棄用的 API 版本,轉而使用更新和更穩定的 API 版本
- extensions/v1beta1 API 版本中的 NetworkPolicy 已不再提供服務
- 遷移至使用 networking.k8s.io/v1 API 版本,自 v1.8 起可用。現有的持久化資料可以透過新版本檢索/更新。
- extensions/v1beta1 API 版本中的 PodSecurityPolicy
- 遷移至使用 policy/v1beta1 API,自 v1.10 起可用。現有的持久化資料可以透過新版本檢索/更新。
- extensions/v1beta1 和 apps/v1beta2 API 版本中的 DaemonSet 已不再提供服務
- 遷移至使用 apps/v1 API 版本,自 v1.9 起可用。現有的持久化資料可以透過新版本檢索/更新。
- 值得注意的變更
spec.templateGeneration
已移除spec.selector
現在為必要欄位,且在建立後不可變更;使用現有的範本標籤作為選擇器以實現無縫升級spec.updateStrategy.type
現在預設為RollingUpdate
(extensions/v1beta1
中的預設值為OnDelete
)
- extensions/v1beta1、apps/v1beta1 和 apps/v1beta2 API 版本中的 Deployment 已不再提供服務
- 遷移至使用 apps/v1 API 版本,自 v1.9 起可用。現有的持久化資料可以透過新版本檢索/更新。
- 值得注意的變更
spec.rollbackTo
已移除spec.selector
現在為必要欄位,且在建立後不可變更;使用現有的範本標籤作為選擇器以實現無縫升級spec.progressDeadlineSeconds
現在預設為600
秒 (extensions/v1beta1
中的預設值為無期限)spec.revisionHistoryLimit
現在預設為10
(apps/v1beta1
中的預設值為2
,extensions/v1beta1
中的預設值為保留全部)maxSurge
和maxUnavailable
現在預設為25%
(extensions/v1beta1
中的預設值為1
)
- apps/v1beta1 和 apps/v1beta2 API 版本中的 StatefulSet 已不再提供服務
- 遷移至使用 apps/v1 API 版本,自 v1.9 起可用。現有的持久化資料可以透過新版本檢索/更新。
- 值得注意的變更
spec.selector
現在為必要欄位,且在建立後不可變更;使用現有的範本標籤作為選擇器以實現無縫升級spec.updateStrategy.type
現在預設為RollingUpdate
(apps/v1beta1
中的預設值為OnDelete
)
- extensions/v1beta1、apps/v1beta1 和 apps/v1beta2 API 版本中的 ReplicaSet 已不再提供服務
- 遷移至使用 apps/v1 API 版本,自 v1.9 起可用。現有的持久化資料可以透過新版本檢索/更新。
- 值得注意的變更
spec.selector
現在為必要欄位,且在建立後不可變更;使用現有的範本標籤作為選擇器以實現無縫升級
v1.22 版本將停止服務以下已棄用的 API 版本,轉而使用更新和更穩定的 API 版本
- extensions/v1beta1 API 版本中的 Ingress 將不再提供服務
- 遷移至使用 networking.k8s.io/v1beta1 API 版本,自 v1.14 起可用。現有的持久化資料可以透過新版本檢索/更新。
該怎麼做
Kubernetes 1.16 預計於 2019 年 9 月發布,因此請務必立即審查您的配置和整合!
- 變更 YAML 檔案以參考較新的 API
- 更新自訂整合和控制器以調用較新的 API
- 更新第三方工具(Ingress 控制器、持續交付系統)以調用較新的 API
遷移到新的 Ingress API 僅需變更 API 路徑 - API 欄位保持不變。但是,遷移其他資源(例如 Deployment)將需要根據變更的欄位進行一些更新。您可以使用 kubectl convert
命令自動轉換現有物件:kubectl convert -f <file> --output-version <group>/<version>
。
例如,要將舊的 Deployment 轉換為 apps/v1,您可以執行:kubectl convert -f ./my-deployment.yaml --output-version apps/v1
請注意,這可能會使用非理想的預設值。要了解有關特定資源的更多資訊,請查看 Kubernetes API 參考文件。
您可以透過啟動 apiserver 並禁用上述資源來測試您的叢集,以模擬即將到來的移除。將以下標誌添加到 apiserver 啟動參數中
--runtime-config=apps/v1beta1=false,apps/v1beta2=false,extensions/v1beta1/daemonsets=false,extensions/v1beta1/deployments=false,extensions/v1beta1/replicasets=false,extensions/v1beta1/networkpolicies=false,extensions/v1beta1/podsecuritypolicies=false
想了解更多資訊?
棄用公告會在 Kubernetes 版本說明中發布。您可以在 1.14 和 1.15 中查看這些公告。
您可以在我們的棄用政策文件中閱讀更多關於 Kubernetes API 和其他 Kubernetes 組件的棄用政策。棄用政策因組件(例如,主要 API 與管理 CLI)和成熟度(alpha、beta 或 GA)而異。
這些詳細資訊也先前已在 kubernetes-dev 郵件列表中宣布,以及 Kubernetes 1.14 和 1.15 的發布。來自 Jordan Liggitt
In case you missed it in the 1.15.0 release notes, the timelines for deprecated resources in the extensions/v1beta1, apps/v1beta1, and apps/v1beta2 API groups to no longer be served by default have been updated:
* NetworkPolicy resources will no longer be served from extensions/v1beta1 by default in v1.16. Migrate to the networking.k8s.io/v1 API, available since v1.8. Existing persisted data can be retrieved/updated via the networking.k8s.io/v1 API.
* PodSecurityPolicy resources will no longer be served from extensions/v1beta1 by default in v1.16. Migrate to the policy/v1beta1 API, available since v1.10. Existing persisted data can be retrieved/updated via the policy/v1beta1 API.
* DaemonSet, Deployment, StatefulSet, and ReplicaSet resources will no longer be served from extensions/v1beta1, apps/v1beta1, or apps/v1beta2 by default in v1.16. Migrate to the apps/v1 API, available since v1.9. Existing persisted data can be retrieved/updated via the apps/v1 API.
To start a v1.15.0 API server with these resources disabled to flush out dependencies on these deprecated APIs, and ensure your application/manifests will work properly against the v1.16 release, use the following --runtime-config argument:
--runtime-config=apps/v1beta1=false,apps/v1beta2=false,extensions/v1beta1/daemonsets=false,extensions/v1beta1/deployments=false,extensions/v1beta1/replicasets=false,extensions/v1beta1/networkpolicies=false,extensions/v1beta1/podsecuritypolicies=false