訂閱
糾錯(cuò)
加入自媒體

關(guān)于Kubernetes在生產(chǎn)中的應(yīng)用,這十大要點(diǎn)ChatGPT不會(huì)說

作者:JFrog大中華區(qū)總經(jīng)理董任遠(yuǎn)

事實(shí)證明,生成式AI在許多相對(duì)基礎(chǔ)的用例中已發(fā)揮作用,但是當(dāng)它需要在技術(shù)方面給予更多指導(dǎo)時(shí),表現(xiàn)又如何呢?

在推出ChatGPT時(shí),我們也和大家一樣想將它給出的答案與常規(guī)網(wǎng)絡(luò)搜索得到的答案進(jìn)行比較。我們進(jìn)行實(shí)驗(yàn),詢問技術(shù)問題并要求它回答具體內(nèi)容。并非所有的回答都有效或正確,但我們?nèi)苑浅UJ(rèn)可其提供反饋以改進(jìn)回答的能力。

然后,我們向ChatGPT更具體地詢問有關(guān)使用 Kubernetes 的建議。它提供了一份在生產(chǎn)中使用Kubernetes的12項(xiàng)最佳實(shí)踐清單,其中大部分都是正確且相關(guān)的。但當(dāng)被要求將該列表擴(kuò)展到50項(xiàng)最佳實(shí)踐時(shí),我們很快就發(fā)現(xiàn),人類仍具有無可取代的價(jià)值。

我們?nèi)绾问褂?Kubernetes

JFrog在Kubernetes上運(yùn)行其整體平臺(tái)已有六年多的時(shí)間,使用的是主流云提供商(包括AWS、Azure和GCP)提供的托管Kubernetes服務(wù)。我們?cè)谌?0多個(gè)地區(qū)開展業(yè)務(wù),每個(gè)地區(qū)都有多個(gè)Kubernetes集群。在中國(guó),許多公司都在使用Kubernetes和其他AI賦能的解決方案來加強(qiáng)運(yùn)營(yíng)并保持市場(chǎng)競(jìng)爭(zhēng)力。

在JFrog的案例中,Kubernetes主要用于運(yùn)行工作負(fù)載和運(yùn)行時(shí)任務(wù),而非存儲(chǔ)。JFrog采用云提供商提供的托管數(shù)據(jù)庫(kù)和對(duì)象存儲(chǔ)服務(wù)。Kubernetes基礎(chǔ)設(shè)施由數(shù)千個(gè)節(jié)點(diǎn)組成,節(jié)點(diǎn)數(shù)量可根據(jù)自動(dòng)擴(kuò)展配置進(jìn)行動(dòng)態(tài)擴(kuò)展或縮減。

JFrog生產(chǎn)環(huán)境包括數(shù)十萬個(gè)Pod (Kubernetes中最小的部署單元)。確切數(shù)量會(huì)隨著Pod的創(chuàng)建或終止而變化;目前,約30萬個(gè)Pod在我們?nèi)蛏a(chǎn)環(huán)境中運(yùn)行,因此需要管理的工作負(fù)載量巨大。

我們經(jīng)常發(fā)布新的應(yīng)用程序版本、補(bǔ)丁和錯(cuò)誤修復(fù)。我們實(shí)施一個(gè)內(nèi)置系統(tǒng)來推出這些更新,包括在全面部署前進(jìn)行適當(dāng)?shù)慕鸾z雀(Canary)測(cè)試,以此保持連續(xù)的發(fā)布周期,并確保服務(wù)的穩(wěn)定性。

大多數(shù)使用過該服務(wù)的人都知道,ChatGPT明確給出免責(zé)聲明,表明其所基于的數(shù)據(jù)并不完全是最新的。鑒于此,并考慮到上述背景之下的需求,在OpenAI更新其數(shù)據(jù)和算法之前,關(guān)于Kubernetes在生產(chǎn)中的現(xiàn)代化應(yīng)用,以下十點(diǎn)是ChatGPT無法告知的:

1. 節(jié)點(diǎn)劃分是門藝術(shù)

節(jié)點(diǎn)劃分涉及在較小的節(jié)點(diǎn)(可減少 "爆炸半徑")和較大的節(jié)點(diǎn)(可提高應(yīng)用性能)之間找到平衡。關(guān)鍵在于根據(jù)工作負(fù)載要求(如CPU或內(nèi)存優(yōu)化)來使用不同的節(jié)點(diǎn)類型。調(diào)整容器資源,使其與節(jié)點(diǎn)的CPU與內(nèi)存比率相匹配,可以優(yōu)化資源利用率。

也就是說,考慮到每個(gè)應(yīng)用程序或服務(wù)的資源消耗模式各不相同,找到每個(gè)節(jié)點(diǎn)上合適的Pod數(shù)量也是一項(xiàng)均衡工作。使用Pod拓?fù)浞植技s束或節(jié)點(diǎn)反親和性等技術(shù)在節(jié)點(diǎn)間分散負(fù)載以優(yōu)化資源使用,有助于適應(yīng)工作負(fù)載強(qiáng)度的變化。對(duì)于使用基于Kubernetes的云服務(wù)的大型企業(yè),負(fù)載均衡和負(fù)載分發(fā)至關(guān)重要。

2. 保護(hù)Control Plane的重要性

監(jiān)控Kubernetes Control Plane至關(guān)重要,尤其是在托管Kubernetes服務(wù)中。雖然云提供商能提供可靠的控制和均衡,但仍需要了解其局限性。應(yīng)做好監(jiān)控和警報(bào),以確保Control Plane以最佳狀態(tài)運(yùn)行。Control Plane運(yùn)行緩慢會(huì)嚴(yán)重影響集群行為,包括調(diào)度、升級(jí)和擴(kuò)展操作。即使是托管服務(wù),也存在需要考慮的限制。

過度使用托管Control Plane可能會(huì)導(dǎo)致災(zāi)難性的崩潰。許多人都經(jīng)歷過這種情況,這也時(shí)刻提醒如果控制計(jì)劃沒有得到適當(dāng)?shù)谋O(jiān)控和管理,它們就可能會(huì)不堪重負(fù)。

3. 如何維持應(yīng)用程序正常運(yùn)行時(shí)間

確定關(guān)鍵服務(wù)的優(yōu)先級(jí)可優(yōu)化應(yīng)用程序的正常運(yùn)行時(shí)間。Pod優(yōu)先級(jí)和服務(wù)質(zhì)量決定了需要始終運(yùn)行的高優(yōu)先級(jí)應(yīng)用程序;了解優(yōu)先級(jí)有助于優(yōu)化穩(wěn)定性和性能。

同時(shí),Pod的反親和性可防止同一服務(wù)的多個(gè)副本部署在同一節(jié)點(diǎn)上。這就避免單點(diǎn)故障,意味著如果一個(gè)節(jié)點(diǎn)出現(xiàn)問題,其他副本不會(huì)受到影響。

還應(yīng)采用為任務(wù)關(guān)鍵型應(yīng)用程序創(chuàng)建專用節(jié)點(diǎn)池的方法。例如,為 init Pod其他重要服務(wù)(如 Prometheus)創(chuàng)建單獨(dú)的節(jié)點(diǎn)池,可顯著提高服務(wù)的穩(wěn)定性和最終用戶體驗(yàn)。

4. 需要制定擴(kuò)展計(jì)劃

是否準(zhǔn)備好處理雙倍部署,以提供必要的容量增長(zhǎng),同時(shí)不帶來任何負(fù)面影響?托管服務(wù)中的集群自動(dòng)擴(kuò)容功能可提供幫助,但了解集群規(guī)模限制也很重要。對(duì)我們來說,典型的集群規(guī)模約為100個(gè)節(jié)點(diǎn);如果達(dá)到這一限制,我們就會(huì)啟動(dòng)另一個(gè)集群,而非勉強(qiáng)現(xiàn)有集群增長(zhǎng)。

還應(yīng)該考慮縱向和橫向的應(yīng)用擴(kuò)容。關(guān)鍵是要找到適當(dāng)?shù)钠胶恻c(diǎn),在不過度消耗的情況下更好地利用資源。一般來說,橫向擴(kuò)容和復(fù)制工作負(fù)載更可取,但要注意其可能會(huì)影響數(shù)據(jù)庫(kù)連接和存儲(chǔ)。

5.要為失敗做好計(jì)劃

在應(yīng)用基礎(chǔ)架構(gòu)的各個(gè)方面,為故障做規(guī)劃已成為日常。需要開發(fā)能夠應(yīng)對(duì)應(yīng)用程序故障、節(jié)點(diǎn)故障和集群故障等不同故障情況的方案。實(shí)施高可用性應(yīng)用程序Pod及Pod反親和性等策略有助于確保發(fā)生故障時(shí)的覆蓋范圍。

每個(gè)機(jī)構(gòu)都需要針對(duì)集群故障制定詳細(xì)的災(zāi)難恢復(fù)計(jì)劃,并定期進(jìn)行演練。當(dāng)從故障中恢復(fù)時(shí),受控和漸進(jìn)的部署有助于避免資源不堪重負(fù)。

6. 確保交付流水線安全

軟件供應(yīng)鏈總是易受錯(cuò)誤和惡意行為者的影響。因此需要控制流水線中的每一個(gè)步驟,避免在未仔細(xì)考慮外部工具和供應(yīng)商可信度的情況下依賴它們。

為保持對(duì)外部資源的控制,需要采取一些措施,例如掃描來自遠(yuǎn)程資源庫(kù)的二進(jìn)制文件,并使用軟件成分分析(SCA)解決方案以對(duì)其進(jìn)行驗(yàn)證。團(tuán)隊(duì)還應(yīng)在整體流水線中應(yīng)用質(zhì)量和安全關(guān)卡,以確保用戶和流水線本身具有更高的可信度,從而保障交付軟件具有更高的質(zhì)量。

7. 同時(shí)確保運(yùn)行時(shí)間的安全

使用準(zhǔn)入控制器來執(zhí)行規(guī)則(例如阻止黑名單版本的部署)有助于確保運(yùn)行時(shí)間的安全。OPA Gatekeeper 等工具有助于執(zhí)行策略,如只允許受控的容器注冊(cè)表進(jìn)行部署。

同時(shí),建議使用基于角色的訪問控制來確保對(duì)Kubernetes集群的訪問安全,其他運(yùn)行時(shí)間保護(hù)解決方案可以實(shí)時(shí)識(shí)別和處理風(fēng)險(xiǎn)。命名空間隔離和網(wǎng)絡(luò)策略有助于阻止橫向移動(dòng)并保護(hù)命名空間內(nèi)的工作負(fù)載?梢钥紤]在隔離節(jié)點(diǎn)上運(yùn)行關(guān)鍵應(yīng)用程序,以降低容器逃逸場(chǎng)景的風(fēng)險(xiǎn)。

8. 確保環(huán)境安全

確保環(huán)境安全意味著要假設(shè)網(wǎng)絡(luò)始終會(huì)受到攻擊。建議采用審計(jì)工具來檢測(cè)群集和基礎(chǔ)設(shè)施中的可疑活動(dòng),以及具有全面可見性和工作負(fù)載控制功能的運(yùn)行時(shí)間保護(hù)。

同類最佳的工具固然很好,但在出現(xiàn)警報(bào)或可疑活動(dòng)時(shí),還需要一個(gè)強(qiáng)大的事件響應(yīng)團(tuán)隊(duì),并制定明確的操作手冊(cè)。與災(zāi)難恢復(fù)類似,應(yīng)定期進(jìn)行演習(xí)和實(shí)踐。此外,由于外部視角和客觀研究能夠提供有價(jià)值的見解,許多機(jī)構(gòu)還會(huì)利用漏洞賞金,或由外部研究人員嘗試入侵系統(tǒng)以發(fā)現(xiàn)漏洞。

9. 持續(xù)學(xué)習(xí)

隨著系統(tǒng)和流程的發(fā)展演進(jìn),需要通過收集歷史性能數(shù)據(jù)來評(píng)估并采取行動(dòng),從而大力開展持續(xù)學(xué)習(xí)。小規(guī)模的持續(xù)改進(jìn)很常見;過去相關(guān)的內(nèi)容可能現(xiàn)在已不再相關(guān)。

主動(dòng)監(jiān)控性能數(shù)據(jù)有助于發(fā)現(xiàn)某項(xiàng)服務(wù)中的內(nèi)存或CPU泄漏,或第三方工具中的性能問題。通過積極評(píng)估數(shù)據(jù)的趨勢(shì)和異常,能夠提高對(duì)系統(tǒng)的理解和系統(tǒng)性能。相較于收到實(shí)時(shí)警報(bào)后再進(jìn)行響應(yīng),這種主動(dòng)監(jiān)控和評(píng)估更具成效。

10.人工操作是最薄弱的環(huán)節(jié)

在可能的情況下,自動(dòng)化能夠最大限度地減少人工參與,這對(duì)于提升安全是一種很好的方法,因?yàn)樵诎踩矫,人工操作是最薄弱的環(huán)節(jié)。建議通過探索一系列可用的自動(dòng)化解決方案,找到最適合的個(gè)性化流程和定義。

GitOps作為在將變更從開發(fā)階段引入生產(chǎn)階段時(shí)的一種的常用方法,為管理配置變更提供眾所周知的合約和界面。類似的方法是為不同類型的配置使用多個(gè)倉(cāng)庫(kù),盡管開發(fā)、登臺(tái)和生產(chǎn)環(huán)境之間應(yīng)該彼此相似,但至關(guān)重要的是其必須明確分離。

展望未來

AI賦能的解決方案有助于降低運(yùn)營(yíng)的復(fù)雜性,并自動(dòng)化執(zhí)行與管理環(huán)境、部署和故障排除有關(guān)的任務(wù),因此為未來帶來希望。即便如此,人類的判斷也是不可替代的,對(duì)此應(yīng)始終予以考量。

如今,AI引擎依賴于公共知識(shí),其中可能包含不準(zhǔn)確、過時(shí)或不相關(guān)的信息,最終導(dǎo)致其給出錯(cuò)誤的答案或建議。歸根結(jié)底,運(yùn)用常識(shí)并牢記AI的局限性至關(guān)重要。


聲明: 本網(wǎng)站所刊載信息,不代表OFweek觀點(diǎn)?帽菊靖寮,務(wù)經(jīng)書面授權(quán)。未經(jīng)授權(quán)禁止轉(zhuǎn)載、摘編、復(fù)制、翻譯及建立鏡像,違者將依法追究法律責(zé)任。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號(hào)
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)