中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes中如何自動檢測和處理棄用的API

發布時間:2021-12-21 17:53:06 來源:億速云 閱讀:128 作者:柒染 欄目:云計算

這篇文章給大家介紹Kubernetes中如何自動檢測和處理棄用的API,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

隨著Kubernetes 1.16可用一段時間,并開始在許多托管Kubernetes平臺上緩慢推出,你可能聽說過API棄用(deprecation)。雖然處理起來相當簡單,但是如果無人參與,這種更改可能會嚴重地中斷你的服務。

API棄用是什么?

隨著Kubernetes的特性集的發展,API也必須發展以支持這種變化。有一些規則旨在保證兼容性和穩定性。這種情況不會在每個版本中都發生,但最終,你將不得不使用新的API版本和格式,因為舊的API將不再受支持。

為什么這對于1.16版本如此重要?

在最近幾個K8s版本中保留了一些棄用的API,最終在Kubernetes 1.16版本中被完全刪除。即以下API組和版本:

  • Deployment — extensions/v1beta1, apps/v1beta1 and apps/v1beta2

  • NetworkPolicy — extensions/v1beta1

  • PodSecurityPolicy — extensions/v1beta1

  • DaemonSet — extensions/v1beta1 and apps/v1beta2

  • StatefulSet — apps/v1beta1 and apps/v1beta2

  • ReplicaSet — extensions/v1beta1, apps/v1beta1 and apps/v1beta2

如果嘗試在1.16中使用其中之一創建資源,操作將會失敗。

如何檢查我是否受到影響?

你可以手動遍歷所有清單,但這可能相當耗時。如果有多個團隊部署到集群中,或者在一個地方沒有當前的所有清單,那么很容易丟失一些清單,并且可能非常不實際。這就是kubent(Kube-No-Trouble)來幫忙的地方。

問題是什么?

用于創建給定資源的API版本的信息通常是不容易找到,因為資源總是在內部轉換為首選存儲版本并存儲在首選存儲版本中。然而。如果你使用kubectl或Helm來部署資源,原始清單也存儲在集群中,我們可以利用它。如果是kubectl,則形式為kubectl.kubernetes.io/last-applied-configuration注釋;如果是Helm,則形式為ConfigMap或Secret。

如何解決棄用產生的問題

最簡單的方法是安裝:

sh -c "$(curl -sSL 'https://git.io/install-kubent')"

這將把kubent的最新版本安裝到/usr/local/bin中。

(如果你和我一樣,不相信別人在博客文章中發布的隨機腳本,請下載針對你的平臺的最新版本,然后解壓縮到你喜歡的任何地方。)

配置kubectl的當前上下文,以指向你想要檢查和運行kubent工具的集群:

Kubernetes中如何自動檢測和處理棄用的API

圖1:kubent運行的示例輸出

Kubent將連接到你的集群,檢索所有可能受到影響的資源,掃描并打印那些受到影響的資源的摘要。

你還可以使用-f json標記來獲得JSON格式的輸出,這更適合讓你將其集成到你的CI/CD流水線中或進一步處理結果。關于可用配置選項的更多細節在doitintl/kube-no-trouble倉庫的README文件中描述。

我應該如何處理檢測到的資源?

在某些情況下,這就像改變manifest中的apiVersion一樣簡單,但在其他情況下,結構可能已經改變,需要調整。另外,要注意,版本之間有很多默認值會發生變化(關于這方面的好文章是David Schweikert的Kubernetes 1.16 API deprecations and changed defaults),因此,僅更改apiVersion并應用相同的清單,就會得到不同的結果。例如,StatefulSet的updateStrategy.type從OnDelete更改為RollingUpdate,導致了非常不同的行為。

https://medium.com/google-cloud/kubernetes-1-16-api-deprecations-and-changed-defaults-e53ccc5c73d5

以前使用的kubectl convert命令現已棄用,可能不能根據前面提到的默認值正確地轉換資源。

最好的方法可能是簡單地應用資源(如果你使用kubent檢測到它們,那么你已經有了這些資源)并從API檢索新版本。這將確保資源被正確地轉換為新版本。你可能已經注意到,kubectl在某種程度上不確定地返回的版本。要請求一個特定的API版本,使用完整的形式:

kubectl get ingress.v1beta1.extensions -o yaml

關于Kubernetes中如何自動檢測和處理棄用的API就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

固始县| 阜城县| 菏泽市| 旌德县| 教育| 富阳市| 内江市| 揭阳市| 冕宁县| 新竹市| 尉犁县| 区。| 怀集县| 石家庄市| 航空| 牟定县| 海阳市| 庆安县| 南宫市| 谢通门县| 普宁市| 英超| 侯马市| 蒙阴县| 宾川县| 安义县| 沁阳市| 孟连| 武川县| 马山县| 崇左市| 府谷县| 哈密市| 涿州市| 会宁县| 霍林郭勒市| 涟水县| 新巴尔虎右旗| 浮梁县| 濉溪县| 赤城县|