作者
萬紹遠,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.rancher.io/zh/reference-guides/amazon-eks-permissions/minimum-eks-permissions
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 監視容器和主機的網絡和程序運作情況,遇到非學習模式下記錄的行為将在 NeuVector 中進行告警。監控模式不會消耗資源。
- 保護模式:NeuVector 監視容器和主機的網絡和程序運作情況,遇到非學習模式下記錄的行為直接拒絕。保護模式是直接拒絕非白名單的通路請求,執行器需要 CPU 和記憶體通過深度資料包檢查來過濾連接配接,進行判斷處理,是以會消耗更多的 CPU 資源。