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