Kubernetes 基礎(chǔ)設施是支持 Kubernetes 環(huán)境的資源(包括服務器、物理或虛擬機、云平臺等)的組合。Kubernetes是一個流行的容器編排開源平臺,它是自動化容器生命周期(從部署到退役)所需的許多操作任務的實踐。
在底層,Kubernetes 的基礎(chǔ)設施和架構(gòu)圍繞著集群的概念展開,集群是一組在 Kubernetes 術(shù)語中稱為“節(jié)點”的機器。當您使用 Kubernetes 部署容器化工作負載時,您會將它們部署到集群上。節(jié)點代表負責運行容器化工作負載的機器,可能是物理機或虛擬機。每個Kubernetes 集群都有一個主節(jié)點和至少一個這樣的工作節(jié)點,盡管通常一個集群會有幾個或更多工作節(jié)點。
另一個重要的 Kubernetes 概念是“pod”。根據(jù)官方文檔,Pod 是 Kubernetes 中最小的可部署單元,它們在集群的節(jié)點上運行。換個角度來看,pod 代表應用程序的各種組件。一個 pod 通常運行一個容器,盡管在某些情況下它可以運行多個容器。
最后,Kubernetes 集群架構(gòu)的另一個基本元素是控制平面。這包括 API 服務器和其他四個組件,它們可以根據(jù)您所需的狀態(tài)有效地管理您的節(jié)點(或機器)。
Kubernetes 基礎(chǔ)架構(gòu)要求是什么?
運行 Kubernetes 所需的基礎(chǔ)架構(gòu)要求取決于您使用它的具體用途。您可以在筆記本電腦上的虛擬機中運行 Kubernetes 版本,例如,用于開發(fā)或測試目的。您可以類似地在托管服務上快速設置環(huán)境。但是,許多生產(chǎn)用例將需要更多的資源來支持您正在運行的應用程序。大規(guī)模、高度分布式的系統(tǒng)可能跨多個云和本地服務器運行,以實現(xiàn)性能目標或確保高可用性。這些情景將需要對適當?shù)幕A(chǔ)設施資源進行更多投資。
什么是基礎(chǔ)設施即代碼和 Kubernetes?
基礎(chǔ)設施即代碼是使用編程語言配置和操作現(xiàn)代基礎(chǔ)設施的實踐,類似于軟件應用程序的開發(fā)和維護方式。有時被稱為配置管理工具,即代碼工具的基礎(chǔ)架構(gòu)為傳統(tǒng) IT 運營引入了更多自動化,并允許DevOps團隊特別專注于優(yōu)化開發(fā)時間、部署頻率、系統(tǒng)性能、可靠性、彈性和安全性等領(lǐng)域。他們之所以能夠做到這一點,是因為基礎(chǔ)架構(gòu)即代碼允許他們在重復的基礎(chǔ)架構(gòu)管理任務上花費更少的時間。
由于 Kubernetes 類似地自動化了運行容器化應用程序所需的大量操作工作,因此有些人認為它是基礎(chǔ)設施即代碼,盡管它實際上被認為是一個容器編排工具。與基礎(chǔ)設施即代碼一樣,Kubernetes 允許您為集群聲明所需的狀態(tài),并自動執(zhí)行許多實現(xiàn)或返回該狀態(tài)所需的任務。一些組織和團隊將基礎(chǔ)架構(gòu)即代碼(或配置管理)工具與 Kubernetes 結(jié)合使用,以滿足管理其云基礎(chǔ)架構(gòu)等需求。
如何保護 Kubernetes
Kubernetes 安全是容器安全整體方法的一個方面。后一個領(lǐng)域的目標最終是保護軟件開發(fā)生命周期的所有方面(包括您的 CI/CD 管道,如果適用)。Kubernetes 本身包含許多重要的安全功能,盡管它們通常需要針對您的環(huán)境和威脅模型進行配置(并隨著時間的推移進行優(yōu)化)以最大程度地降低風險。
一個很好的例子是基于角色的訪問控制,或 RBAC。這使管理員可以精細控制用戶能夠在環(huán)境中訪問和執(zhí)行的操作,從而降低特權(quán)升級攻擊和其他威脅的風險。然而,舊版本的 Kubernetes 默認情況下沒有開啟 RBAC。即使您運行的是最新版本,您也需要確保為每個用戶正確設置了設置,并且只授予絕對必要的訪問或特權(quán)。定期審查這些也是一個好主意。
托管 Kubernetes 開源項目的組織云原生計算基金會發(fā)布了一篇關(guān)于Kubernetes 安全性的九種不同最佳實踐的博客文章——包括正確設置 RBAC 并確保您使用的是最新版本。(這是任何軟件平臺的一般最佳實踐。)他們還建議使用Kubernetes 命名空間功能來增加隔離,以及通過關(guān)閉對敏感端口的訪問和限制對 Kubernetes 的訪問來強化集群上運行的節(jié)點API。
安全和基礎(chǔ)設施運營專家通常還建議確保在生產(chǎn)環(huán)境中運行容器化應用程序時,確保有適當?shù)墓ぞ邅肀O(jiān)控和記錄日志。這是為了幫助確保您在環(huán)境變得越來越復雜時保持必要的可見性和可審計性。
管理 Kubernetes 的最佳方法
實施和管理 Kubernetes 有多種選擇。最佳選擇取決于您的用例、可用的技能和資源以及其他因素。啟動和運行開源平臺可能需要大量的內(nèi)部專業(yè)知識。一般來說,Kubernetes 和云原生開發(fā)通常最適合已經(jīng)采用 DevOps 和其他現(xiàn)代軟件實踐和技術(shù)的團隊。
缺乏必要的內(nèi)部技能來自行有效管理 Kubernetes 的組織可能需要考慮基于底層開源平臺的商業(yè)或托管選項之一。補充工具(例如基礎(chǔ)設施即代碼和安全工具)和第三方支持也有許多選項。