容器是什麼,和Kubernetes是什麼關係,為什麼對OpenStack很重要

容器和Kubernetes越來越熱,因為它們讓開發人員專注於他們的應用程序,而不用擔心管理底層基礎設施。雖然OpenStack並沒有取代AWS,但它顯然是開放基礎設施領域的一個成功案例。為什麼它們對彼此重要,這是你需要了解的。

容器是什麼

從2000年開始就開始就有了容器概念,隨著Docker 1.0的發佈,這一概念在2014年左右開始流行起來,並且成為咆哮的浪潮。

簡而言之,容器是一種技術,允許開發人員快速創建現成的獨立應用程序,分解組件,可以獨立地部署、測試和更新。它還使它們能夠創建一個完全功能的開發環境,與其他應用程序或系統組件隔離。

為了更好地理解這種“新”技術的本質,我發現將它與虛擬機進行比較是很有幫助的,所以請耐心等待。

當管理程序使用整個設備時,容器只是抽象操作系統內核。這意味著,容器不需要直接訪問物理硬件。通過這樣做,它們允許更低的資源消耗和更好的成本效率——這是容器和vm之間的主要區別之一。

我一直聽到謠言說,在Docker出現之前,創建和運行容器是可能的,然而,它需要大量的黑客一樣的技巧,只不過是一場噩夢。Docker的美妙之處在於,它使容器化變得容易,它可以用一些命令來實現——因此令容器成為潮流。

使用容器的好處

  • 易用性:容器讓開發人員、系統管理員、架構師和幾乎所有人,在他們的筆記本上打包應用程序,並在任何公共雲、私有云、甚至是裸金屬上運行它們。這加速了DevOps生命週期,使新服務在任何地方都能快速部署,並最終使所有相關人員的生活更加輕鬆。

  • 速度和效率:由於容器是在內核上運行的獨立代碼單元,所以它們非常輕。因此,他們佔用的資源更少。當開發人員想要創建並運行一個新的Docker容器時,他們可以在幾秒鐘內做到這一點,而創建和運行vm可能需要更長的時間,因為他們必須每次都啟動一個完整的虛擬操作系統。

  • 模塊化和可伸縮性:最後,但同樣重要的是,容器可以很容易地將應用程序的功能分解為單個組件。例如,開發人員可能希望在一個容器中運行他的MongoDB數據庫,在另一個容器中運行他的RabbitMQ服務器,而他的Ruby應用程序則在另一個容器中。Docker將這些容器鏈接在一起,創建應用程序,使其在未來更容易獨立伸縮或更新組件。

難怪大家都急於儘快採用Docker。但是,如果沒有適當的管理系統,它們的好處將無法完全實現。

下面,歡迎來到Kubernetes。

Kubernetes是什麼

Kubernetes 1.0在2015年發佈,最初由谷歌創建。此後不久,谷歌與Linux基金會合作創建了雲計算原生應用基金會(CNCF),並向該組織捐贈了Kubernetes作為種子技術。CNCF的主要目的是推廣容器技術。

Kubernetes,也就是K8s,是一個開源的集群管理軟件,用於部署、運行和管理Docker容器。它讓開發人員專注於他們的應用程序,而不用擔心提供它們的底層基礎設施。它的美妙之處在於:Kubernetes可以運行在大量的雲服務提供商上,比如AWS、GCE和Azure,在Apache Mesos框架的上層,甚至在本地的虛擬機(VirtualBox)。

Kubernetes的關鍵點是什麼呢?

為了更好地理解集群管理器軟件的本質,假設您有一個重要的業務應用程序運行在數百個容器的多個節點上。在一個沒有Kubernetes的世界裡,每當您的團隊發佈一個新的應用程序特性時,您需要手動更新數百個容器。手動操作需要花費大量的時間,容易出錯,錯誤將對您的業務不利。

Kubernetes旨在自動化部署、縮放和操作應用程序容器。它基本上將密切相關的應用程序容器分類為功能組(“pods”),以方便管理和發現。在pod基礎設施的上層,Kubernetes提供了另一層,允許對容器進行調度和服務管理。

容器如何知道要在哪個計算機上運行?Kubernetes檢查調度。如果一個容器崩潰了怎麼辦?Kubernetes創造了一個新的。無論何時你需要推出新版本的應用程序,Kubernetes都會覆蓋。它自動化並簡化了您的日常事務與容器。

使用Kubernetes的好處

  • 它是可移植的:雲本地應用程序開發的理念可以用一個詞來概括:“可移植性”。在CNCF的前面,可移植性也是Kubernetes的主要概念:它消除了基礎設施鎖定,並使開發人員能夠在任何基礎設施上運行。

  • 它是可擴展的:Kubernetes在操作系統、容器運行時、存儲引擎、處理器架構或雲平臺時提供了選擇的自由。它還允許開發人員在Kubernetes API中集成他們自己的應用程序,並通過Kubernetes工具擴展或推出新的創新特性。

  • 它是自癒合的:Kubernetes持續地執行修復,保護您的容器應用程序抵禦任何可能影響可靠性的故障。從而降低了操作人員的負擔,提高了系統的整體可靠性。它還提高了開發人員的速度,因為開發人員可能花在故障診斷上的時間和精力可以花在開發新特性上。

你好,我的名字是OpenStack,我很不容易共事。

這裡有一個簡短的回顧:OpenStack是一個開源的雲操作系統,用於開發私有和公共雲環境。它由多個相互依賴的微服務組成,併為您的應用程序和虛擬機提供了一個生產就緒的IaaS層。

OpenStack的複雜性仍然受到影響,它目前有大約60個組件,也被稱為“服務”,其中6個是核心組件,控制著雲的最重要方面。雲的計算、網絡和存儲管理、身份以及訪問管理都有組件。有了這些,OpenStack項目的目標是為AWS、谷歌雲、微軟Azure或DigitalOcean等大型雲提供商提供一個開放的選擇。

OpenStack人氣爆發式增長背後的原因很簡單。因為它為那些想要部署自己的私有云基礎設施的公司提供開源軟件,在大多數公共雲平臺都很弱的地方,它是強大的。使用OpenStack的最大好處可能是它提供的供應商中立的API。它的開放API消除了對企業的專有、單一廠商鎖定的關注,並在雲中創建了最大的靈活性。

因為它們解決了類似的問題,但是在不同的層上,OpenStack和Kubernetes可以是一個很好的組合。通過使用它們,DevOps團隊可以比以前更自由地創建雲本地應用程序。

然而…

容器+ Kubernetes + OpenStack:未來的平臺?

我們在客戶身上看到的是,無論安全性和控制多麼重要,它們都不需要只使用OpenStack。他們想要的更多:

  • 易於部署(來自公共雲提供商)

  • 控制(來自私有云)

  • 成本效率(隨處可見)

  • 靈活選擇最佳位置運行任何給定的應用程序

  • 可擴展性

  • 可靠性

  • 安全

通常情況下,比初創公司大的公司想要享受“混合”的可能性。他們希望控制自己的基礎設施,但在必要時,也要對公共雲進行擴展。但我們的經驗也是,完全享受混合場景的好處並不總是那麼容易。不幸的是,在基礎設施之間移動工作負載仍然是一個相當困難的任務。

這就是Kubernetes能派上用場的地方。因為它能同時控制私人和公共雲,Kubernetes用戶可以開啟混合基礎設施的真正力量。

回到我們開始的地方:容器

還記得文章開頭的容器嗎?他們的每秒在於他們讓你:

  • 在OpenStack上運行容器化的應用程序

  • 使用Docker將您自己的OpenStack服務裝箱。

  • 兩種方法都可以從Kubernetes受益。

在Kubernetes上運行OpenStack的好處

由於它對雲原生應用程序的巨大支持,Kubernetes可以再次使OpenStack變得很酷:它可以啟用滾動更新、版本控制和新OpenStack組件和特性的部署,從而改進了整個OpenStack生命週期管理。此外,OpenStack用戶還可以從自修復基礎結構中獲益,使OpenStack更能適應核心服務和獨立計算節點的失敗。最後,但並非最不重要的是,通過在Kubernetes上運行OpenStack,用戶還可以從基於容器的基礎設施的資源效率中獲益。OpenStack的Kolla項目在這裡有很大的幫助:它提供了生產就緒的容器和部署工具,用於運行可伸縮、快速和可靠的OpenStack雲。

在OpenStack上運行Kubernetes的好處

另一方面,通過在OpenStack上部署K8s,Kubernetes用戶可以訪問一個健壯的框架來部署和管理應用程序。隨著越來越多的企業採用雲本地模式,他們面臨著管理混合架構的挑戰,這些架構包含公共和私有云、容器和虛擬機。OpenStack從來沒有因為它的互操作性而出名——對於一些人來說,這可能是個好消息,但對大多數人來說卻是壞消息。通過引入容器和Kubernetes,用戶可以自由地選擇最佳的雲環境來運行任何給定的應用程序,或者應用程序的一部分,同時仍然享受可伸縮性、控制和安全性。Kubernetes可以使用Magnum來部署,它是OpenStack API服務,使容器編制引擎作為OpenStack中的一流資源可用。這給了Kubernetes所有共享基礎設施的好處。

擁抱容器化

今天的企業想要很多東西,但是“使用單一的雲基礎設施並最終被鎖定”並不是很好的。相反,他們想要獲得公共雲的好處(例如,易於部署),私有云(例如安全性),而且今天比以往任何時候都想要更快的上市時間。因此,他們逐漸轉向雲技術實踐。

但是,無論從理論上說,建立和有效地使用混合架構仍然是一項艱鉅的任務。大多數雲基礎設施,包括OpenStack,都沒有被設計成允許在彼此之間輕鬆移動工作負載。

  • 但是有一個Docker,他來了,併為每個人都做了容器化。

  • 還有Kubernetes,他來了,並自動處理容器化。

  • 還有OpenStack,它提供了一個獨立於供應商的、安全的、生產就緒的IaaS層,用於容器化的應用程序。

通過結合這三者,企業有機會充分實現混合架構的好處,更加敏捷,更快地交付創新。

別急,還有更多!

請看這張圖片,以瞭解雲的最重要層,以及構建、運行和管理雲本地應用程序的不同工具和技術。

容器是什麼,和Kubernetes是什麼關係,為什麼對OpenStack很重要

我們還演示了三個典型的雲環境,我們看到客戶在OpenShift、Azure和cloud Foundry上運行。

容器是什麼,和Kubernetes是什麼關係,為什麼對OpenStack很重要

您是否已經使用Docker和Kubernetes,甚至可能與OpenStack結合使用?你如何找到這種組合?在下面的評論部分分享你的想法,一起討論。

原文鏈接:

https://www.dynatrace.com/blog/containers-relate-kubernetes-matters-openstack/

雲技術社區介紹:

雲技術社區成立於2014年,國內最大的雲技術交流平臺,分享在雲計算/虛擬化項目實施中的資訊、經驗和技術,堅持乾貨。

相關推薦

推薦中...