Kubernetes無(wú)狀態(tài)應(yīng)用的一般特征是什么,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
金壇網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,金壇網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為金壇1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的金壇做網(wǎng)站的公司定做!
以 12 要素為代表的微服務(wù)標(biāo)準(zhǔn),很好地給微服務(wù)的特征做出了指導(dǎo)。然而具體到以容器形式在 Kubernetes 上運(yùn)行的無(wú)狀態(tài)業(yè)務(wù)應(yīng)用上,這個(gè)標(biāo)準(zhǔn)是有些高層的——它看重的是方法和架構(gòu)。如果僅從外在視角來(lái)對(duì)一個(gè)“順眼”的 Kubernetes 應(yīng)用進(jìn)行觀察,這個(gè)應(yīng)用應(yīng)該有什么特征呢?
微服務(wù)應(yīng)用通常會(huì)有各種外部依賴,例如數(shù)據(jù)庫(kù)、緩存、隊(duì)列等平臺(tái)能力,或者業(yè)務(wù)上的依賴服務(wù)等,因此一個(gè)健康的微服務(wù)組合而成的應(yīng)用,必須能處理好依賴關(guān)系。
微服務(wù)的啟動(dòng)順序不是固定的,并且存在獨(dú)立更新、重啟的可能。而很多應(yīng)用僅在啟動(dòng)時(shí)進(jìn)行連接,這就要求在 Kubernetes 上運(yùn)行的應(yīng)用,首先在啟動(dòng)時(shí),不會(huì)因?yàn)闀簳r(shí)無(wú)法連接依賴服務(wù)直接崩潰;同時(shí)在運(yùn)行期間,也有處理這種隨時(shí)重連的能力。
存活檢測(cè)關(guān)注的是進(jìn)程是否活躍,是否應(yīng)該重新啟動(dòng);就緒檢測(cè)代表的是服務(wù)能力,是否應(yīng)該保存在 Service 的負(fù)載均衡池中。
在沒(méi)有設(shè)置就緒檢測(cè)的情況下,Pod 一旦啟動(dòng)成功,K8s 就會(huì)把相關(guān)服務(wù)的請(qǐng)求發(fā)給該實(shí)例,如果這個(gè)實(shí)例啟動(dòng)較慢,就有可能對(duì)業(yè)務(wù)造成損失。同理,存活和就緒檢測(cè)應(yīng)該分別進(jìn)行,例如業(yè)務(wù)阻塞時(shí),暫時(shí)將實(shí)例摘除,但是無(wú)需重啟,即可逐步恢復(fù)服務(wù)能力。
聯(lián)系到前面的依賴關(guān)系問(wèn)題,在微服務(wù)環(huán)境中,一個(gè)服務(wù)的就緒檢測(cè)應(yīng)該僅僅關(guān)注本應(yīng)用的情況,檢測(cè)過(guò)程中不應(yīng)包含對(duì)依賴服務(wù)的調(diào)用——否則所有依賴故障服務(wù)的其它服務(wù)的就緒檢查失敗,造成大面積故障。
應(yīng)用不應(yīng)繼續(xù)把日志輸出到本地文件,而應(yīng)該輸出到 stdout
和 stderr
;
集群應(yīng)該針對(duì)容器的 stdout
、stderr
提供統(tǒng)一的日志采集,建議使用 Daemonset 而非 Sidecar;
進(jìn)行日志采集的同時(shí),集群應(yīng)提供 ES、Loki 或其它類似機(jī)制來(lái)對(duì)日志進(jìn)行處理,并且其處理和存儲(chǔ)能力應(yīng)該有初步預(yù)案;
應(yīng)用日志應(yīng)提供分級(jí)開關(guān),保證同一鏡像在不同環(huán)境中可以輸出不同數(shù)量和級(jí)別的日志信息。
容器命令入口應(yīng)該有能力接收 SIGTERM
,并在需要的情況下傳遞給業(yè)務(wù)主進(jìn)程;
應(yīng)用進(jìn)程接收到 SIGTERM
信號(hào)之后,不應(yīng)立刻關(guān)停,而是處理好剩余的在途業(yè)務(wù);
使用 preStop
等 Pod 生命周期手段來(lái)完成特定任務(wù);
避免使用長(zhǎng)連接,保持簡(jiǎn)單負(fù)載均衡的有效性。
避免運(yùn)行單 Pod 的 Deployment;
使用 Pod 軟親和避免同 Deployment 中的不同 Pod 分布在同一節(jié)點(diǎn)上;
遭遇不可恢復(fù)的故障,應(yīng)該允許應(yīng)用崩潰,由 K8s 重新啟動(dòng);
定義 PDB(Pod disruption budgets),告知 K8s 為應(yīng)用提供最低 Pod 數(shù)量保障。
必須定義 CPU 和內(nèi)存的 Requests;
必須定義內(nèi)存的 Limits;
同一集群中的不同微服務(wù),如果有不同 QoS 要求,應(yīng)該定義不同的 qosClass
,避免被無(wú)差別驅(qū)逐。
看完上述內(nèi)容,你們掌握Kubernetes無(wú)狀態(tài)應(yīng)用的一般特征是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)頁(yè)名稱:Kubernetes無(wú)狀態(tài)應(yīng)用的一般特征是什么
本文URL:http://www.rwnh.cn/article18/gopsgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站改版、營(yíng)銷型網(wǎng)站建設(shè)、商城網(wǎng)站、網(wǎng)站導(dǎo)航、關(guān)鍵詞優(yōu)化
聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)