本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
1.16 中移除的已棄用 API:你需要知道什麼
隨著 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
想了解更多?
廢棄的 API 會在 Kubernetes 發行說明中公佈。您可以在 1.14 和 1.15 中檢視這些公告。
您可以在我們的廢棄策略文件中閱讀更多關於 Kubernetes API 和其他 Kubernetes 元件的廢棄策略。廢棄策略因元件(例如,主要 API 與管理 CLI)和成熟度(alpha、beta 或 GA)而異。
這些詳細資訊也已在 Kubernetes 1.14 和 1.15 釋出時在 kubernetes-dev 郵件列表中之前宣佈。來自 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