Kubernetes最佳實踐
Kubernetes是一個開放源代碼的容器編排平臺,可自動執(zhí)行容器部署,連續(xù)擴展和降級,容器負(fù)載平衡等操作
Kubernetes是一個開放源代碼的容器編排平臺,可自動執(zhí)行容器部署,連續(xù)擴展和降級,容器負(fù)載平衡等操作。
由于在具有1000個容器的許多生產(chǎn)服務(wù)器上都使用了容器化,因此很好地管理它們變得非常重要,這就是Kubernetes所做的。
如果您正在使用Kubernetes,則必須采用最佳實踐來更好地進行容器編排。
這是您必須遵循的一些Kubernetes最佳實踐的列表。
設(shè)置資源請求和限制
在資源有限的生產(chǎn)集群上部署大型應(yīng)用程序時,如果節(jié)點或內(nèi)存不足,該應(yīng)用程序?qū)⑼V构ぷ鳌?yīng)用程序的停機時間會對業(yè)務(wù)產(chǎn)生巨大影響。但是您可以通過具有資源請求和限制來解決此問題。
對資源的請求和限制是Kubernetes中控制諸如內(nèi)存和CPU之類的資源使用情況的機制。如果一個Pod耗盡了所有CPU和內(nèi)存,則其他Pod將會耗盡資源,并且將無法運行該應(yīng)用程序。因此,您需要在Pod上設(shè)置資源請求和限制以提高可靠性。
僅供參考,限制將始終高于要求。如果您的請求高于定義的限制,則您的容器將無法運行。您可以為窗格中的每個容器設(shè)置請求和限制。使用千位定義CPU,使用字節(jié)(兆字節(jié)/兆字節(jié))定義內(nèi)存。
以下是將限制設(shè)置為500毫秒CPU和128兆字節(jié),并為請求設(shè)置300百萬CPU和64兆字節(jié)的配額的示例。

使用livenessProbe和readinessProbe
健康檢查在Kubernetes中非常重要。
它提供兩種健康檢查–準(zhǔn)備就緒探針和活動性探針。
準(zhǔn)備情況探針用于檢查應(yīng)用程序是否準(zhǔn)備好開始提供流量。該探針需要先傳入Kubernetes,然后才能開始將流量發(fā)送到在容器內(nèi)運行應(yīng)用程序的Pod。Kubernetes將停止將流量發(fā)送到Pod,直到此準(zhǔn)備狀況健康檢查失敗。
活動度探針用于檢查應(yīng)用程序是否仍在運行(活動)或已停止(死機)。如果該應(yīng)用程序正常運行,則Kubernetes不會執(zhí)行任何操作。如果您的應(yīng)用程序已死,Kubernetes將啟動一個新的pod并在其中運行該應(yīng)用程序。
如果未正確執(zhí)行這些檢查,則窗格可能會終止,或者甚至在準(zhǔn)備就緒之前也會開始接收用戶請求。
有三種類型的探針可用于活動性和準(zhǔn)備情況檢查:HTTP,Command和TCP。
讓我展示一個最常見的示例,即HTTP探針。
您的應(yīng)用程序?qū)⒃谄渲邪粋€HTTP服務(wù)器。當(dāng)Kubernetes ping通HTTP服務(wù)器的路徑并獲得HTTP響應(yīng)時,它將標(biāo)記該應(yīng)用程序運行狀況為良好,否則為不正常。

構(gòu)建小容器圖像
最好使用較小的容器映像,因為它占用較少的存儲空間,并且您將能夠更快地提取和構(gòu)建映像。由于圖像的大小將較小,因此安全攻擊的機會也將較小。
有兩種減小容器大小的方法-使用較小的基本圖像和構(gòu)建器模式。當(dāng)前,最新的NodeJS基本映像為345 MB,而NodeJS高山映像僅為28 MB,比原來小十倍。因此,請始終使用較小的映像并添加運行應(yīng)用程序所需的依賴項。
要使容器圖像更小,可以使用構(gòu)建器模式。該代碼在第一個容器中構(gòu)建,然后將編譯后的代碼打包在最終容器中,而無需制作該編譯后的代碼所需的所有編譯器和工具,從而使容器映像更小。
授予安全訪問級別(RBAC)
擁有安全的Kubernetes集群非常重要。
對群集的訪問應(yīng)配置良好。您必須定義每位用戶每秒/分鐘/小時的請求數(shù),每個IP地址允許的并發(fā)會話,請求大小以及路徑和主機名的限制。這將有助于確保群集免受DDoS攻擊的侵害。
在Kubernetes集群上工作的開發(fā)人員和DevOps工程師應(yīng)具有定義的訪問級別。Kubernetes的基于角色的訪問控制(RBAC)功能在這里很有用。您可以使用Roles和ClusterRoles定義訪問配置文件。為了簡化配置RBAC的過程,您可以使用開源的rbac-managers來幫助您簡化語法或使用Rancher(默認(rèn)情況下它提供RBAC)。

Kubernetes Secrets存儲機密信息,例如身份驗證令牌,密碼和ssh密鑰。您永遠(yuǎn)不要在IaC信息庫上檢查Kubernetes Secrets ,否則,那些可以訪問您的git信息庫的人就會發(fā)現(xiàn)它。
DevSecOps是現(xiàn)在的流行語,它談?wù)揇evOps和安全性。各組織在了解趨勢的重要性時就采用了這種趨勢。
不斷更新
建議始終在群集上安裝最新版本的Kubernetes。
Kubernetes的最新版本包括新功能,先前功能的更新,安全更新,錯誤修復(fù)等。如果您將Kubernetes與云提供商一起使用,則更新起來非常容易。
使用命名空間
Kubernetes船舶三種不同的命名空間-默認(rèn)情況下,KUBE-系統(tǒng),和KUBE-公眾。
這些名稱空間在Kubernetes集群中對于團隊之間的組織和安全起著非常重要的作用。
如果您是一個僅工作5-10個微服務(wù)的小型團隊,則使用默認(rèn)名稱空間是有意義的。但是,快速成長的團隊或大型組織將有幾個團隊在測試或生產(chǎn)環(huán)境中工作,因此每個團隊都需要有一個單獨的命名空間以簡化管理。
如果他們不這樣做,他們最終可能會意外覆蓋甚至破壞另一個團隊的應(yīng)用程序/功能,甚至沒有意識到。建議創(chuàng)建多個名稱空間,并使用它們將您的服務(wù)分段為可管理的塊。
這是在名稱空間內(nèi)創(chuàng)建資源的示例:

使用標(biāo)簽
隨著您的Kubernetes部署的增長,它們將始終包含多個服務(wù),pod和其他資源。跟蹤這些信息可能會變得很麻煩??赡芨咛魬?zhàn)性的是描述Kubernetes,這些各種資源如何相互作用,如何復(fù)制,擴展和服務(wù)它們。Kubernetes中的標(biāo)簽對于解決這些問題非常有幫助。
標(biāo)簽是用于在Kubernetes界面中組織項目的鍵值對。
例如,app:kube-app,階段:test,角色:前端。它們用于描述Kubernetes集群中各種對象和資源如何協(xié)同工作。

因此,您可以通過始終標(biāo)記資源和對象來減輕Kubernetes生產(chǎn)的痛苦。
審核記錄
為了確定Kubernetes集群中的威脅,日志審計非常重要。審核有助于回答諸如發(fā)生的事情,發(fā)生的原因,發(fā)生的原因等問題。
與對kube-apiserver的請求有關(guān)的所有數(shù)據(jù)都存儲在名為的日志文件中audit.log。該日志文件以JSON格式構(gòu)建。
在Kubernetes中,默認(rèn)情況下,審核日志存儲在中/var/log/audit.log,審核策略位于處/etc/kubernetes/audit-policy.yaml。
要啟用審核日志記錄,請使用以下參數(shù)啟動kube-apiserver:
--audit-policy-file=/etc/kubernetes/audit-policy.yaml --audit-log-path=/var/log/audit.log
這是audit.log配置用于記錄窗格中更改的示例文件:

如果Kubernetes集群中有任何問題,您始終可以返回并檢查審核日志。這將幫助您恢復(fù)群集的正確狀態(tài)。
應(yīng)用相似性規(guī)則
Kubernetes中有兩種機制可以更好地將Pod 與節(jié)點相關(guān)聯(lián)-Pod和Node關(guān)聯(lián)。建議使用這些機制以獲得更好的性能。
使用節(jié)點親緣關(guān)系,您可以根據(jù)定義的條件在節(jié)點上調(diào)度容器,根據(jù)容器要求,在Kubernetes集群中選擇并分配匹配的節(jié)點。

使用Pod關(guān)聯(lián)性,您可以在同一節(jié)點上調(diào)度多個Pod(以改善延遲),或決定將Pod放在單獨的節(jié)點上(以實現(xiàn)高可用性)以提高性能。

在分析群集的工作負(fù)載之后,您需要確定要使用的親和力策略。
Kubernetes終止
當(dāng)不再需要Kubernetes時,它們會終止Pod。您可以通過命令或API調(diào)用來啟動它,選定的Pod處于終止?fàn)顟B(tài),并且沒有流量發(fā)送到這些Pod。然后將SIGTERM消息發(fā)送到這些容器,然后容器關(guān)閉。
吊艙會正常終止,默認(rèn)情況下,寬限期為30秒。如果Pod仍在運行,Kubernetes會發(fā)送SIGKILL消息來強制關(guān)閉Pod。最后,Kubernetes從主機上的API服務(wù)器中刪除了這些Pod。
如果您的廣告連播始終花費超過30秒的時間,則可以將該寬限期增加到45或60秒。

