云計算
本文是關于kubernetes安全系列三篇文章中的最后一篇。在第一篇文章中,我們分享了如何確保企業的kubernetes集群免受外部*;第二篇文章介紹了三種保護kubernetes免受內部威脅的方法。在本文中,我們將介紹如何處理資源消耗或noisy neighbor問題。
對于那些設置了多租戶kubernetes集群的集群管理員而言,他們十分關注和擔心的一個問題是,如何防止共同租戶成為“noisy neighbor”,即一個壟斷了cpu、內存、存儲和其他資源的人。noisy neighbor會對共享基礎設施的其他用戶資源的性能產生極壞的影響。
如此一來,跟蹤kubernetes容器和pod的資源使用情況,對集群管理而言非常重要,因為它不僅可以保持容器編排系統處于最佳運行狀態,降低運維成本,還可以加強kubernetes的整體安全狀況。
一些運維團隊可能不認為資源消耗是一種重要的安全問題,至少沒有保護kubernetes免受內部和外部網絡*重要。但這種觀點是不正確的。因為厲害的*會利用功能不良的基礎設施,來找到*kubernetes組件的方法。
“安全不僅僅是‘不要闖進我的房子’,而是‘我怎么能讓我的房子一直保持良好的運行狀態’,”rancher labs的高級解決方案架構師adrian goins表示。
運維團隊需要最大限度地利用kubernetes pods(一組具有共享存儲和網絡資源的一個或多個容器)所消耗的資源,以確保每個用戶都能擁有最佳性能,并且能監控成本分配的使用情況。“使用等于成本,”goins說,“因為kubernetes資源都是運行在aws、谷歌云、阿里云等等云提供商的底層計算基礎設施上,一切資源消耗都以為著金錢成本。即使集群是在數據中心的裸機上運行,過多的使用也會花費硬件、電力和其他資源。”
默認情況下,配置容器時,對其可以使用的資源量沒有任何限制。如果容器不能高效運行,部署容器的組織必將支付超額費用。值得慶幸的是,kubernetes具有幫助運維團隊管理和優化kubernetes資源利用能力的功能。
管理pods中的資源
當管理員定義pod時,他們可以選擇指定每個容器需要多少cpu和內存(ram)。當容器指定了資源請求時,調度程序可以更好地決定將pod放在哪個節點上。根據kubernetes的文檔,當容器指定了限制時,可以按指定的方式處理節點上的資源爭用。
默認情況下,kubernetes集群中的所有資源都是在默認的命名空間中創建的。命名空間是一種邏輯地將集群資源進行分組的方法,包括用于指定資源配額的選項。
管理員可以在命名空間上設置資源限制或配額,為在命名空間中運行的工作負載或應用程序分配一定量的cpu、ram或存儲——kubernetes集群中的三個資源。“如果在命名空間中啟動另一個資源會超出預設的配額,那么任何新資源都無法啟動,”goins指出。
?“當你應用了資源配額時,意味著你強制在該命名空間中運行的所有內容為其自身設置資源限制。限制有兩種類型:預留,和最大限制,”goins解釋說。例如,通過預留,管理員可以讓kubernetes集群為wordpress站點分配128 mb的ram。對于部署的每個wordpress pod,服務器本身將保證128 mb的ram。因此,如果管理員將資源請求與1gb的資源配額相結合,則用戶只能在超過其限制之前運行八個wordpress pod。在那之后,他們將無法再使用ram了。
資源限制的第二部分是最大限度。管理員可以預留128 mb的資源請求和最多256 mb的ram。“如果pod超過256 mb的ram使用量,kubernetes會殺死它并重新啟動它,”goins說。“如此以來,用戶可以免受失控過程和noisy neighbor的影響。”
項目和資源配額
像rancher這樣的平臺,旨在通過提供直觀的界面和集中管理任務(如全局層的角色描述)來簡化kubernetes的管理。
正如前一篇關于內部威脅防護的文章所述,rancher包含一個有助于減輕集群管理負擔的“項目(project)”資源,來超越命名空間。在rancher中,project允許管理員將多個命名空間作為單個實體進行管理。因此,rancher可以將資源配額應用于projects。
在標準kubernetes部署中,資源配額只能應用于單獨的命名空間。但是,管理員無法通過單次操作,同時將配額應用于命名空間。資源配額必須經過多次操作。
然而在rancher中,管理員可以將資源配額應用于project,然后將配額傳播到每個命名空間。然后,kubernetes會使用本機版本的資源配額,來強制執行管理員限制。如果管理員希望更改特定命名空間的配額,則可以覆蓋以前的配額。
強化和優化kubernetes
毋庸置疑,kubernetes已成為容器編排的標準,這也促使大多數云和虛擬化供應商將其作為標準基礎架構來提供。但是,對與kubernetes環境相關的安全問題的普遍缺乏認識,可能會使各種組件暴露于來自網絡集群內外的*中。
本系列文章的上兩篇中提供了一些可行的步驟,來告訴大家如何通過使用kubernetes功能和容器管理解決方案(如rancher),來加強kubernetes對外部和內部網絡威脅的防范。企業應通過基于角色的訪問控制(rbac)和強身份驗證從外部保護kubernetes api訪問。對于內部人員保護,由于kubernetes集群是多用戶,因此組織需要通過rbac、邏輯隔離和networkpolicies來保護交叉通信。
為了防止其他租戶壟斷cpu、內存、存儲和其他資源從而拖累整個集群的性能,kubernetes提供資源限制和配額等功能,以幫助運維團隊管理和優化kubernetes資源利用功能。最后,除了可用的默認設置之外,業界還有一些非常有效的工具可以幫助用戶完成kubernetes集群的管理和保護。例如像rancher這樣的平臺就是一種高度優化的容器管理解決方案,專為將多個集群部署到生產環境中的組織而構建,企業用戶可以更輕松地管理和運行各地的kubernetes。它可以保護kubernetes集群免受外部*威脅、內部隱患甚至noisy neighbor。
購買網站到底比自己建站好在哪里?蒜站來告訴你電源管理器不能運行怎么辦_聯想電源管理器打不開的解決方法買云服務器怎么樣商標注冊相關問題-其他問題三個月內完成億元級B輪和B 輪融資 寵物家為何深受資本青睞?如何去掉寫保護的u盤 教你取消u盤寫保護的操作方法查詢云服務器軟件的網站阿里云服務器個人版購買