日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

linux磁盘分配最佳实践,构建容器应用的8个最佳实践

發(fā)布時(shí)間:2025/4/5 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux磁盘分配最佳实践,构建容器应用的8个最佳实践 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

導(dǎo)讀

容器是未來在共有云和私有云進(jìn)行應(yīng)用開發(fā)的主要趨勢(shì),但是容器到底是什么,為什么它們成為了一種廣受歡迎的部署機(jī)制,而且你需要怎樣來修改你的應(yīng)用來為容器化的環(huán)境優(yōu)化它?

容器是未來在共有云和私有云進(jìn)行應(yīng)用開發(fā)的主要趨勢(shì),但是容器到底是什么,為什么它們成為了一種廣受歡迎的部署機(jī)制,而且你需要怎樣來修改你的應(yīng)用來為容器化的環(huán)境優(yōu)化它?

什么是容器?

容器技術(shù)的歷史始于 2000 年的 SELinux 和 2005 年的 Solaris zones。今天,容器是由包括 SELinux、Linux 命名空間和控制組(cgroup)等幾項(xiàng)內(nèi)核特性構(gòu)成,提供了用戶進(jìn)程、網(wǎng)絡(luò)空間和文件系統(tǒng)空間的隔離。

為什么它們?nèi)绱肆餍?#xff1f;

最近容器技術(shù)大規(guī)模的應(yīng)用在很大程度上是由于旨在使容器更加易于使用的標(biāo)準(zhǔn)的發(fā)展,例如 Docker 鏡像格式和分布模型,這個(gè)標(biāo)準(zhǔn)使用不可變鏡像(immutable image),這正是容器運(yùn)行時(shí)環(huán)境的起點(diǎn),不可變鏡像可以保證開發(fā)團(tuán)隊(duì)發(fā)布的鏡像就是經(jīng)過測(cè)試的,和部署到生產(chǎn)環(huán)境中的鏡像是同樣的鏡像。

容器所提供的輕量級(jí)隔離為一個(gè)應(yīng)用組件提供了一個(gè)更好的抽象。在容器中運(yùn)行的組件將不會(huì)干擾其它可能直接運(yùn)行在虛擬機(jī)上的應(yīng)用。它們可以避免對(duì)系統(tǒng)資源的爭(zhēng)奪,而且除非它們共享一個(gè)持久卷,否則不會(huì)阻止對(duì)同一個(gè)文件的寫請(qǐng)求。容器使得日志和指標(biāo)采集的實(shí)踐得以標(biāo)準(zhǔn)化,而且它們可以在物理機(jī)和虛擬機(jī)上支持更大的用戶密度,所有的這些優(yōu)點(diǎn)將導(dǎo)致更低的部署成本。

我們應(yīng)該如何構(gòu)建一個(gè)基于容器的應(yīng)用呢?

將應(yīng)用改為運(yùn)行在容器中并不是什么很高的要求。主要的 Linux 發(fā)行版都有提供了基礎(chǔ)鏡像,任何可以在虛擬機(jī)上運(yùn)行的程序都可以在上面運(yùn)行。但是容器化應(yīng)用的趨勢(shì)是遵循如下最佳實(shí)踐:

1. 實(shí)例是一次性的

你的應(yīng)用的任何實(shí)例都不需要小心地保持運(yùn)行。如果你的一個(gè)運(yùn)行了許多容器的系統(tǒng)崩潰了,你還能夠轉(zhuǎn)移到其它可用的系統(tǒng)去創(chuàng)建新的容器。

2. 重試而不是崩潰

當(dāng)你的應(yīng)用的一個(gè)服務(wù)依賴于另一個(gè)服務(wù)的時(shí)候,在另一個(gè)服務(wù)不可用的時(shí)候它應(yīng)該不會(huì)崩潰。例如,你的 API 服務(wù)正在啟動(dòng)而且監(jiān)測(cè)到數(shù)據(jù)庫不能連接。你應(yīng)該設(shè)計(jì)它使得其不斷重試連接,而不是運(yùn)行失敗和拒絕啟動(dòng)。當(dāng)數(shù)據(jù)庫連接斷開的時(shí)候 API 可以返回 503 狀態(tài)碼,告訴客戶端服務(wù)現(xiàn)在不可用。應(yīng)用應(yīng)該已經(jīng)遵守了這個(gè)實(shí)踐,但是如果你正在一個(gè)一次性實(shí)例的容器環(huán)境中工作,那么對(duì)這個(gè)實(shí)踐的需要會(huì)更加明顯。

3. 持久性數(shù)據(jù)是特殊的

容器是基于共享鏡像啟動(dòng),它使用了寫時(shí)復(fù)制(COW)文件系統(tǒng)。如果容器的進(jìn)程選擇寫入文件,那么這些寫的內(nèi)容只有在直到容器存在時(shí)才存在。當(dāng)容器被刪除的時(shí)候,寫時(shí)復(fù)制文件系統(tǒng)中的那一層會(huì)被刪除。提供給容器一個(gè)掛載的文件系統(tǒng)目錄,使之在容器存活之外也能持久保存,這需要另外的配置,而且會(huì)額外消耗物理存儲(chǔ)。明確的抽象定義了什么存儲(chǔ)是持久的,催生出了實(shí)例是一次性的觀點(diǎn)。擁有一個(gè)抽象層也使得容器編制引擎可以處理掛載和卸載持久卷的復(fù)雜請(qǐng)求,以便這些持久卷可以用于容器。

4. 使用 stdout 而不是日志文件

現(xiàn)在你或許會(huì)思考,如果持久的數(shù)據(jù)是特殊的,那么我用日志文件來做什么事情?容器運(yùn)行時(shí)環(huán)境和編制引擎項(xiàng)目所采用的方法是進(jìn)程應(yīng)該寫入 stdout/stderr,而且具有歸檔和維護(hù)容器日志的基礎(chǔ)設(shè)施。

5. 敏感信息(以及其它配置信息)也是特殊的

你絕不應(yīng)該將敏感信息例如密碼、密鑰和證書硬編碼到你的鏡像中。通常在你的應(yīng)用與開發(fā)服務(wù)、測(cè)試服務(wù),或者生產(chǎn)服務(wù)相交互時(shí),這些敏感信息通常都是不同的。大多數(shù)開發(fā)者并沒有訪問生產(chǎn)環(huán)境的敏感信息的權(quán)限,所以如果敏感信息被打包到鏡像中,那么必須創(chuàng)建一個(gè)新的鏡像層來覆蓋這個(gè)開發(fā)服務(wù)的敏感信息。基于這一點(diǎn)來看,你再也不能使用與你們開發(fā)團(tuán)隊(duì)所創(chuàng)建的和質(zhì)量測(cè)試所測(cè)試的相同的鏡像了,而且也失去了不可修改的鏡像的好處。相反的,這些值應(yīng)該被存儲(chǔ)在環(huán)境變量中文件中,它們會(huì)在容器啟動(dòng)時(shí)導(dǎo)入。

6. 不要假設(shè)服務(wù)的協(xié)同定位

在一個(gè)編排好的容器環(huán)境中,你會(huì)希望讓編排器將你的容器發(fā)送到任何最適合的節(jié)點(diǎn)。最適合意味著很多事情:它應(yīng)該基于那個(gè)節(jié)點(diǎn)現(xiàn)在擁有最多的空間、容器所需的服務(wù)質(zhì)量、容器是否需要持久卷,等等。這可能意味這你的前端、API 和數(shù)據(jù)庫容器最終都會(huì)放在不同的節(jié)點(diǎn)。盡管給每個(gè)節(jié)點(diǎn)強(qiáng)制分配一個(gè) API 容器是可以做到的(參考 Kubernetes 的 DaemonSets),但這種方式應(yīng)該留給執(zhí)行監(jiān)控節(jié)點(diǎn)自身這類任務(wù)的容器。

7. 冗余/高可用計(jì)劃

即使你沒有那么多負(fù)載需要高可用性的配置,你也不應(yīng)該以單路方式編寫服務(wù),否則會(huì)阻止它運(yùn)行多份拷貝。這將會(huì)允許你運(yùn)用滾動(dòng)式部署,使得將負(fù)載從一個(gè)節(jié)點(diǎn)移動(dòng)到另外一個(gè)節(jié)點(diǎn)非常容易,或者將服務(wù)從一個(gè)版本更新到下一個(gè)版本而不需要下線。

8. 實(shí)現(xiàn)就緒檢查和靈活性檢查

應(yīng)用在響應(yīng)請(qǐng)求之前會(huì)有一定的啟動(dòng)時(shí)間是一件很正常的事情,例如,一個(gè) API 服務(wù)器需要填充內(nèi)存數(shù)據(jù)緩存。容器編排引擎需要一種方法來檢測(cè)你的容器是否準(zhǔn)備好服務(wù)用戶請(qǐng)求。為一個(gè)新的容器提供就緒檢查可以允許我們進(jìn)行滾動(dòng)式部署,使得舊容器可以繼續(xù)運(yùn)行直到不再需要它,這可以防止服務(wù)宕機(jī)。類似的,一個(gè)存活檢查也是一種容器編排引擎持續(xù)檢查容器是否在健康可用狀態(tài)的方法。決定容器健康或者說“存活”應(yīng)該由容器應(yīng)用的創(chuàng)建者說了算。一個(gè)不再存活的容器將會(huì)被結(jié)束,而且一個(gè)新的容器會(huì)被創(chuàng)建來替代它。

想查找更多資料?

我將會(huì)出席十月份的格雷絲霍普計(jì)算機(jī)女性峰會(huì)(Grace Hopper Celebration of Women in Computing),你可以在這里來看一下關(guān)于我的訪談:應(yīng)用的容器化:是什么,為什么,和如何實(shí)現(xiàn)。今年不去 GHC 嗎?那你可以在 OpenShift 和 Kubernetes 的項(xiàng)目站點(diǎn)來了解關(guān)于容器、編排和應(yīng)用的相關(guān)內(nèi)容。

總結(jié)

以上是生活随笔為你收集整理的linux磁盘分配最佳实践,构建容器应用的8个最佳实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。