整天談容器,你知道兩大容器管理平台Kubernetes與OpenShift有什麼區別?
- 2019 年 12 月 24 日
- 筆記
容器化是開發和部署應用的熱門趨勢,因為它們是加速開發的有效方式。容器的使用量在過去幾年呈指數增長。
但是,跨基礎架構管理容器可能會變得十分複雜,所以容器管理平台對於任何企業來說都是必不可少的工具。Kubernetes和OpenShift是市場上最受歡迎的兩個容器管理平台。而OpenShift是基於Kubernetes的,那麼二者之間到底有哪些區別呢?
什麼是OpenShift?
OpenShift是由紅帽(Red Hat)開發的容器化軟件解決方案。他們的主要產品是OpenShift容器平台,這是基於Kubernetes管理的平台即服務(PaaS)。它是用Go和AngularJS編寫的,並且有Apache許可證。

OpenShift Origin是紅帽基於開源的雲平台,允許開發人員構建,測試和部署雲應用。該系統在Kubernetes核心之上添加工具,以實現更快的應用開發,輕鬆部署和擴展。
該平台除了可擴展外,還支持Go,Node.js,Ruby,Python,PHP,Perl和Java,允許用戶添加對其他語言的支持。關於可擴展性,該平台可以自動或手動擴展容器化應用。
OpenShift提供的一些功能包括:
在整個應用程序生命周期中的安全性 – 安全性檢查內置於容器堆棧中。
平台上包含的內置監控功能是Prometheus,一種數據庫和應用監控軟件。你可以在Grafana儀錶板上實時顯示應用。
集中式策略管理 – 跨集群的單個控制台為用戶提供了實施策略的集中位置。
兼容性-OpenShift是Certified Kubernetes計劃的一部分,因此允許與Kubernetes容器工作負載兼容。
使用OpenShift的好處包括:
快速的應用開發 – 平台流傳輸和自動化容器管理過程,從而增強了DevOps過程。應用開發的這種加速意味着你可以更快地進入市場,從而提高競爭力。
沒有供應商鎖定提供與供應商無關的開源平台,這意味着用戶可以根據需要將其容器流程遷移到新的操作系統,而無需重新進行容器化編排。
自助服務配置 – OpenShift允許用戶集成他們最常使用的工具,例如,視頻遊戲開發人員在開發與多個操作系統兼容的遊戲時可以使用此功能。
什麼是Kubernetes?
Kubernetes是一個開源容器即服務(CaaS)編排系統,用於自動化容器化應用的部署,擴展和管理,從而改進應用程序開發過程。Kubernetes的一些功能包括:
- 處理自動化 – 例如,哪個服務器將託管容器。
- 自我監控 – 平台可以不斷檢查服務器和容器的運行狀況。
- 可擴展性 – 其主要功能之一是它允許橫向擴展,使企業能夠根據其工作負載需求快速擴展其存儲。
- 靈活性 – 作為一種開源的基於雲的工具,可以在多個環境中運行它,內部部署,混合或公有雲基礎架構。
- 容器平衡 – 平台自動計算容器的最佳位置。
- 存儲編排 – 與大多數存儲系統集成,這意味着用戶可以將Kubernetes與如AWS Elastic Storage這樣服務的集成。

Kubernetes的好處包括:
- 成熟的架構 – 建立在十多年的Google工程師經驗之上。
- 不斷演進的開發 – Kubernetes大型活躍社區不斷發佈新功能。用戶社區作為支持網絡,促進協作。
- 豐富的應用支持 – 支持各種編程語言和框架。這種靈活性使Kubernetes能夠滿足各種用例的需求。
OpenShift和Kubernetes之間的差異
由於OpenShift基於Kubernetes,因此它們有很多共同之處。但是,兩個平台之間存在一些差異。讓我們對OpenShift和Kubernetes功能進行比較:

基礎
雖然兩者都基於Linux,但每個產品都在不同的環境中運行:
Kubernetes在其可運行的操作系統方面更加靈活。但是,包管理器應該是RPM,這意味着選擇合適的Linux發行版。因此最好在Fedora,Ubuntu或Debian上運行它。Kubernetes可以部署在任何主要的IaaS平台上,例如AWS,Azure,GCP、阿里雲、IBM雲平台等。
OpenShift可以安裝在Red Hat Enterprise Linux(RHEL)和Red Hat Enterprise Linux Atomic Host(RHELAH)以及Fedora和CentOS上。OpenShift Dedicated允許在雲中創建自己的集群,特別是基於AWS。
Rollout
這兩種產品在Rollout方面都很複雜:
Kubernetes運行平台的多樣性意味着有無數的解決方案可以在本地創建Kubernetes集群。大多數都基於Rancher Kubernetes Everywhere(RKE)或kops等安裝程序。
OpenShift可避免在首次Rollout後需要額外的組件。因此,它配備了基於Ansible的專有安裝程序,可以使用最少的配置參數安裝OpenShift。
Web UI
與通過基於Web的用戶界面管理集群的能力相比,OpenShift和Kubernetes之間存在很大差異。
Kubernetes的儀錶板必須單獨安裝,需要通過kube代理訪問,以將本地機器的端口轉發到集群的管理服務器。此外,它沒有登錄頁面,但你需要手動創建承載令牌以提供身份驗證和授權。所有這些複雜性導致Web UI對於真正的日常管理工作而言不是很有價值。
OpenShift的Web控制台有一個登錄頁面,可以輕鬆訪問,甚至可以讓你通過表單創建和更改大多數資源。雖然你無法通過Web管理集群,但可以可視化服務器,項目和集群角色。
集成鏡像註冊表
關於集成圖像註冊表的兩個系統之間的關鍵區別:
使用Kubernetes,可以設置自己的Docker註冊表,但沒有集成鏡像註冊表的概念。
OpenShift附帶了一個集成的鏡像註冊表,可以與Docker Hub或Red Hat一起使用。它甚至還有一個註冊表控制台,可以在其中搜索與集群中項目相關的鏡像和鏡像流的信息。
Jenkins
雖然Kubernetes中不存在該概念,但可以部署自己的自定義Jenkins鏡像。生成的組件是上傳到鏡像存儲庫的docker鏡像。
OpenShift使用Pipeline構建,這是一種源到鏡像構建的形式,它引用包含Jenkins的鏡像,而Jenkins又監控ImageStreamsTags。當需要更新時,它可以啟動Jenkins構建。
網絡
Kubernetes沒有本機網絡解決方案,但提供可供第三方網絡插件使用的接口。
OpenShift有一個開箱即用的本機網絡解決方案OpenvSwitch,它提供三種不同的插件。
哪一個更好?
兩者都是開源軟件平台,來滿足容器編排和應用開發。它們使得以簡單易管理的方式部署和管理容器化應用成為可能。OpenShift Web控制台使其非常有用,允許直接通過它執行80%以上的任務。
雖然兩者都有類似的核心(畢竟OpenShift內置了Kubernetes),OpenShift通過其開箱即用的功能使安裝更容易。安裝Kubernetes通常需要交鑰匙解決方案或託管Kubernetes集群。
您選擇的系統將取決於您的系統要求以及開發過程的關鍵靈活性或良好的Web界面。