這篇文章給大家介紹Kubernetes中如何自動(dòng)檢測(cè)和處理?xiàng)売玫腁PI,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
網(wǎng)站的建設(shè)創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營(yíng)網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為成都玻璃鋼坐凳等企業(yè)提供專業(yè)服務(wù)。
隨著Kubernetes 1.16可用一段時(shí)間,并開始在許多托管Kubernetes平臺(tái)上緩慢推出,你可能聽說過API棄用(deprecation)。雖然處理起來相當(dāng)簡(jiǎn)單,但是如果無人參與,這種更改可能會(huì)嚴(yán)重地中斷你的服務(wù)。
API棄用是什么?
隨著Kubernetes的特性集的發(fā)展,API也必須發(fā)展以支持這種變化。有一些規(guī)則旨在保證兼容性和穩(wěn)定性。這種情況不會(huì)在每個(gè)版本中都發(fā)生,但最終,你將不得不使用新的API版本和格式,因?yàn)榕f的API將不再受支持。
為什么這對(duì)于1.16版本如此重要?
在最近幾個(gè)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中使用其中之一創(chuàng)建資源,操作將會(huì)失敗。
如何檢查我是否受到影響?
你可以手動(dòng)遍歷所有清單,但這可能相當(dāng)耗時(shí)。如果有多個(gè)團(tuán)隊(duì)部署到集群中,或者在一個(gè)地方?jīng)]有當(dāng)前的所有清單,那么很容易丟失一些清單,并且可能非常不實(shí)際。這就是kubent(Kube-No-Trouble)來幫忙的地方。
問題是什么?
用于創(chuàng)建給定資源的API版本的信息通常是不容易找到,因?yàn)橘Y源總是在內(nèi)部轉(zhuǎn)換為首選存儲(chǔ)版本并存儲(chǔ)在首選存儲(chǔ)版本中。然而。如果你使用kubectl或Helm來部署資源,原始清單也存儲(chǔ)在集群中,我們可以利用它。如果是kubectl,則形式為kubectl.kubernetes.io/last-applied-configuration注釋;如果是Helm,則形式為ConfigMap或Secret。
如何解決棄用產(chǎn)生的問題
最簡(jiǎn)單的方法是安裝:
sh -c "$(curl -sSL 'https://git.io/install-kubent')"
這將把kubent的最新版本安裝到/usr/local/bin中。
(如果你和我一樣,不相信別人在博客文章中發(fā)布的隨機(jī)腳本,請(qǐng)下載針對(duì)你的平臺(tái)的最新版本,然后解壓縮到你喜歡的任何地方。)
配置kubectl的當(dāng)前上下文,以指向你想要檢查和運(yùn)行kubent工具的集群:
圖1:kubent運(yùn)行的示例輸出
Kubent將連接到你的集群,檢索所有可能受到影響的資源,掃描并打印那些受到影響的資源的摘要。
你還可以使用-f json標(biāo)記來獲得JSON格式的輸出,這更適合讓你將其集成到你的CI/CD流水線中或進(jìn)一步處理結(jié)果。關(guān)于可用配置選項(xiàng)的更多細(xì)節(jié)在doitintl/kube-no-trouble倉(cāng)庫的README文件中描述。
我應(yīng)該如何處理檢測(cè)到的資源?
在某些情況下,這就像改變manifest中的apiVersion一樣簡(jiǎn)單,但在其他情況下,結(jié)構(gòu)可能已經(jīng)改變,需要調(diào)整。另外,要注意,版本之間有很多默認(rèn)值會(huì)發(fā)生變化(關(guān)于這方面的好文章是David Schweikert的Kubernetes 1.16 API deprecations and changed defaults),因此,僅更改apiVersion并應(yīng)用相同的清單,就會(huì)得到不同的結(jié)果。例如,StatefulSet的updateStrategy.type從OnDelete更改為RollingUpdate,導(dǎo)致了非常不同的行為。
https://medium.com/google-cloud/kubernetes-1-16-api-deprecations-and-changed-defaults-e53ccc5c73d5
以前使用的kubectl convert命令現(xiàn)已棄用,可能不能根據(jù)前面提到的默認(rèn)值正確地轉(zhuǎn)換資源。
最好的方法可能是簡(jiǎn)單地應(yīng)用資源(如果你使用kubent檢測(cè)到它們,那么你已經(jīng)有了這些資源)并從API檢索新版本。這將確保資源被正確地轉(zhuǎn)換為新版本。你可能已經(jīng)注意到,kubectl在某種程度上不確定地返回的版本。要請(qǐng)求一個(gè)特定的API版本,使用完整的形式:
kubectl get ingress.v1beta1.extensions -o yaml
關(guān)于Kubernetes中如何自動(dòng)檢測(cè)和處理?xiàng)売玫腁PI就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
網(wǎng)站題目:Kubernetes中如何自動(dòng)檢測(cè)和處理?xiàng)売玫腁PI
轉(zhuǎn)載源于:http://chinadenli.net/article28/gpcscp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、虛擬主機(jī)、網(wǎng)站設(shè)計(jì)、網(wǎng)站排名、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)