作者
萬紹遠,CNCF 基金會官方認證 Kubernetes CKA&CKS 工程師,雲原生解決方案架構師。對 ceph、Openstack、Kubernetes、prometheus 技術和其他雲原生相關技術有較深入的研究。參與設計並實施過多個金融、保險、製造業等多個行業 IaaS 和 PaaS 平臺設計和應用雲原生改造指導。
“大航海”時代,國內企業紛紛在出海賽道上揚帆起航。伴隨著業務出海,系統也要做全球化部署,公有云成為了出海企業的首選。
但是,Kubernetes 在企業落地過程中仍然面臨諸多挑戰:
- 需要經驗豐富的 IT 人員對 Kubernetes 叢集進行部署、升級、監控, 確保系統可靠性。
- 多個 Kubernetes 叢集如何進行統一策略管理、安全管控,實現集中式的視覺化管控和一致性運維 ?
- 如何利用 Kubernetes 和周邊生態技術棧,更高效地迭代和交付業務應用 ?
Rancher 就是一款很好的工具,能夠透過其多叢集管理能力和 Kubernetes 生命週期安全支援,幫助出海業務提高部署效率,降低運維成本。
多叢集統一納管
業務出海需要重點評估平滑遷移成本。容器是非常好的應用載體,諸多企業考慮在海外公有云使用 Kubernetes。那麼應該選擇公有云的虛擬機器自建 Kubernetes?還是直接使用公有云廠商的 Kubernetes 發行版,例如 AWS EKS 或者 Azure AKS 呢?
建議企業使用公有云的 Kubernetes 發行版,因為它直接與公有云的基礎設施進行了整合,可以更好地利用雲上資源,提高部署效率,降低運維成本。以 AWS EKS 為例,使用 EKS 建立 Loadblance 型別的 Service 會自動在 AWS 中建立 ELB 負載均衡器,儲存自動對接了 EBS 和 EFS。相比自建 Kubernetes 來說,降低了手動對接的操作過程。
Rancher 支援國內外主流的公有云 Kubernetes 發行版,如 EKS、GKE、ACK、CCE、TKE、AKS……使用者可透過 Rancher 一鍵建立並納管這些雲供應商的 Kubernetes 發行版。
以一個客戶架構為例
1、在中國本地資料中心部署 Rancher,本地資料中心的 Kubernetes 使用 RKE 進行部署,並同時建設同城災備環境。
2、海外業務叢集使用 Rancher 對接 AWS,建立對應的 EKS 叢集進行統一納管,透過專線連線。
使用 Rancher 部署 EKS 叢集示例
AWS 配置:
1、在 AWS 中提前建立 VPC 和安全組
2、新增 IAM 許可權,建立策略:https://docs.ranchermanager.r...
3、建立使用者關聯此策略
Rancher 配置
1、建立叢集
2、選擇 EKS
3、選擇對應的區域和配置資訊
填寫生成的賬戶 Access-key 和 Secret-key
4、配置 VPC 和子網
5、配置節點主機規格
6、叢集建立完成
對應的 AWS 頁面也能看見建立的叢集。在 Rancher UI 建立負載均衡和建立 PVC 也會自動在 AWS 中建立
多叢集統一發布
跨叢集應用克隆
當實現多叢集納管後也帶來一個問題:使用者在測試叢集部署服務驗證可用以後,如何快速地將應用直接釋出到生產叢集?如果只能在生產叢集中手動建立應用,在手動配置過程中容易出現引數丟失等問題。
為了解決這些問題,Rancher 企業版從設計之初就新增了跨叢集應用克隆的功能,可以一鍵將某一叢集的應用釋出到其他叢集,減少使用者手動配置的工作量。 同時使用者還可以透過跨叢集應用克隆功能,提前將應用備份到其他叢集,一旦有叢集崩潰的情況出現,可以馬上切換流量到其他叢集提供服務,快速實現應用的恢復。
Gitops 統一發布
同時 Rancher 也內建了 Gitops 工具 Fleet,實現海量叢集同步分發
- 將應用程式碼和構建 Docker 映象的 Dockerfile 檔案放置到 Gitlab 對應專案中
- 在 Gitlab 中建立用於專門用於存放部署 yaml 的專案
- 配置 CI 工具用於程式碼編譯映象構建和業務 yaml 檔案修改
- 配置 Rancher-Fleet 檢測存放部署 yaml 的專案,有更新後自動部署到對應環境中
點選持續交付功能建立 Fleet 規則
配置對接 git 倉庫存放應用部署 yaml 的路徑
可以選擇部署到全部叢集還是指定叢集,或透過標籤靈活定義的叢集組中
完成後可以看見應用部署的狀態,後續也會實時檢測 git 倉庫中的變化,進行自動部署
多叢集監控
每個叢集可以部署獨立的 Prometheus,對單獨叢集進行監控,可支援對容器雲平臺以下維度的監控:
- 叢集總體資源使用情況
- 節點資源使用情況
- 元件效能監控
- 應用容器 POD 資源使用監控
但在多叢集場景下,單獨叢集監控需要一個一個點進去,並且人工分析資料,更大的作用是故障後的問題排查,並不能很好地提前發現問題。更好的處理方式是將納管的全部叢集監控資料進行彙總和分析展示。如:記憶體、CPU、網路流量最高的 top 10(叢集、主機、POD);重啟次數最多的 top 10 POD;全部叢集 Error 事件統一展示;以便更好地幫助平臺運維提前發現風險點。
全域性監控主要透過 Thanos 實現,會在每個叢集的 Prometheus 上透過 Thanos sidecar。對於單個叢集的短期資料,Prometheus 透過 local-pv 儲存到本地磁碟;而長期資料則透過 Thanos-sidecar 儲存到 s3 協議的物件儲存中。
安全
隨著 Kubernetes 在業務中的廣泛使用,容器安全問題正逐步受到重視。容器雲平臺的安全涉及到映象安全、叢集安全以及容器執行時安全,同時也涉及到租戶網路隔離、使用者及使用者許可權控制。Rancher 整合了容器安全平臺 SUSE NeuVector,可以更好地保護使用者的平臺安全。
NeuVector 本身也支援多叢集管理、策略統一下發和規則統一管理。
審計日誌
為了滿足我國本土使用者需求,Rancher 企業版在 UI上整合了多維度審計日誌展示功能(什麼人在什麼時間操作了什麼資源物件,結果是什麼)。透過審計日誌,平臺管理員可以快速檢視到平臺的操作記錄,方便進行審計。
准入策略控制及網路微隔離
SUSE NeuVector 是業界首個 100% 開源的零信任容器安全平臺,在 Rancher 新版本中已經進行了整合,可直接部署使用。NeuVector 可實現以下功能
1、准入策略控制
進入NeuVector進行配置
2、在准入控制選單新增以下策略
由於容器執行期間會共享宿主機的核心、儲存和埠,所以在實際生產環境中,誤操作或平臺被入侵將影響宿主機上其他應用 Pod 的正常執行,因此需要針對叢集進行 Pod 的安全策略控制,以此來保證主機安全。
- 禁止使用特權容器
- 禁止從父程式獲取更多許可權
- 限制使用主機 IPC
- 限制只能只讀根檔案系統
- 限制 HostPath 路徑
- 限制 HostPort 使用範圍
3、網路動態微隔離
叢集內 POD 間需要進行網路微隔離,提高安全性,避免 POD 被入侵後互相影響。NeuVector 將每個 workload 識別為一個組,透過對組進行策略控制,並且每個組預設會自動學習對應的網路連線規則和啟動程式,並生成白名單。
NeuVector 的組支援 3 種模式:學習模式、監控模式和保護模式。各個模式實現作用如下。
- 學習模式:學習和記錄容器、主機間網路連線情況和程式執行資訊。自動構建網路規則白名單,保護應用網路正常行為。為每個服務的容器中執行的程式設定安全基線,並建立程式配置檔案規則白名單。
- 監控模式:NeuVector 監視容器和主機的網路和程式執行情況,遇到非學習模式下記錄的行為將在 NeuVector 中進行告警。監控模式不會消耗資源。
- 保護模式:NeuVector 監視容器和主機的網路和程式執行情況,遇到非學習模式下記錄的行為直接拒絕。保護模式是直接拒絕非白名單的訪問請求,執行器需要 CPU 和記憶體透過深度資料包檢查來過濾連線,進行判斷處理,所以會消耗更多的 CPU 資源。
新建的容器業務自動發現後預設為學習模式,也可以透過設定將預設模式設定為監控模式或保護模式。
總結
總之,Rancher 的多叢集管理能力(多叢集管理、多叢集應用統一發布、多叢集監控)和 Kubernetes 生命週期安全支援可以幫助企業提升部署效率,降低運維成本,是出海企業進行全球化部署的明智選擇。