容器化首部曲 - 什麼是Container和K8S

更新 發佈閱讀 7 分鐘
這篇分享希望能讓你了解

什麼Container、與Kubernetes和Docker是什麼關係,以及Kubernetes中又包含了哪些
組件?

1.Container – 容器化技術介紹
2.淺談Container / Docker / Kubernetes 三者關係
3.Kubernetes的四種組成元件

Container – 容器化技術介紹

Container在中文被稱為集裝箱或貨櫃,能夠裝載許多物品並便於運送,而這個概念延伸到資訊科技領域中被稱為容器,引申為將應用服務(Application)與其相依的資源封裝成輕量化的映像檔,使開發、維運團隊可輕易攜帶與搬遷。

註:相依性資源(Dependency):官方是以bins/libs稱之,也就是二進位執行檔
(binaries)與函數庫(libraries),它們可能是MySQL、Nodejs、.Net Framework、
程式庫、DLL、編譯器等運行App所需要的執行環境,相依性資源大抵上可以說是我們前面
提到的解決方案堆疊(solution stack)或軟體棧(software stack)。

現今在DevOps 與敏捷式開發的做法中,越來越廣泛地運用於AI與微服務應用的開發上。

raw-image

在虛擬架構中,為了增加硬體資源的利用率,在硬體層上建立一層虛擬化平台,並於平台中建立與運行多個虛擬機器(VM),彼此分離獨立並共享硬體資源。雖然透過虛擬化的作法可以大幅節省實體機器的數量與有效利用硬體資源,但由於虛擬機器是以作業系統(OS)為中心,每個虛擬機器都需要一個Guest OS的配置,因此會造成幾種問題:

  1. 佔據系統資源
    每個虛擬機器都需要使用底層硬體資源建立Guest OS,佔據記憶體與硬碟空間,並且還需要透過Hypervisor進行虛擬機器與底層資源的溝通
  2. 啟動時間漫長
    由於每個虛擬機器都需要安裝Guest OS,使得映像檔需涵蓋OS相關內容而過於肥大,因此建立和啟動時都會花費大量時間
  3. 機器搬遷瓶頸
    搬遷時需要考慮OS的版本與規格,增加搬遷困難度

因此相對傳統虛擬機器,容器化的目標是要改善虛擬機器因Guest OS所導致的問題,所以容器以應用程式為中心,透過Container Manager將應用程式所需要的環境(Environment)、執行檔(binaries)、函數庫(libraries)等相依資源進行打包封裝,並共用Host OS資源,如此一來省去Guest OS與Hypervisor的負擔,在啟動時間上就可以更加快速。

raw-image

但早在1982年就出現的容器化技術,為何在近十年才開始受到企業關注呢?原因在於早期容器化做法的門檻較高,且並無統一標準,直到2013年dotCloud這家公司釋出一套可將容器標準化的平台Docker,並受到各大科技巨頭的支持後,使Docker成為目前主流的容器標準。

淺談Container / Docker / Kubernetes 三者關係

在剛開始接觸容器化時,常看到有人講Container、有人講Docker,容易被專有名詞搞混,到底兩者有什麼差別? 而Kubernetes又是什麼,要如何理解這三個之間的關係,今天就來跟大家說明一下。

Container

容器化(Containerization)是一種連同硬體作業系統與運行服務做虛擬化的技術,讓運作在平台上的容器(Container)共享一個Host OS的資源,而容器是容器化技術具體化的一個實例(Instance),就像虛擬化技術所實踐出來的實例稱做為虛擬機一樣。

容器化側重在應用程式的開發、攜帶,封裝應用程式的相依資源與運行環境,強調輕量、快速與彈性;虛擬化則側重於硬體設備的整併與資源運用,強調資源利用率與高可用性。

raw-image

雖然容器化虛擬化在運作邏輯和側重重心完全不同,但我們還是可以藉由虛擬化的概念來理解容器化中的各個角色。

Docker

Docker是由dotCloud所發佈的一個容器標準化的開源平台,並以Docker為名成立新公司推廣,如同虛擬化需要有虛擬層一樣,在Hypervisor上運作虛擬機器,容器化也需要有一個平台可以運行容器與資源分配,稱為Docker Engine。

Docker可以將應用程式與其相依資源封裝成Docker映像檔,使其可被重複利用或移植於其他環境,同時提供Dockerfile記錄建立容器的每一步驟,只要有Docker Engine,就可以將Docker映像檔或Dockerfile轉換成容器。

raw-image
Kubernetes

Kubernetes是一個可以自動化部署與管理容器的工具,是由Google設計並開源系統。就像你可以透過VMware vCenter去部署與管理虛擬機器一樣,可以藉由Kubernetes達到大量容器的部署與調動,目前市面上包含SUSE的Rancher、Red Hat的OpenShift,以及VMware的Tanzu都是依循Kubernetes所開發出來的容器管理產品,而除了Kubernetes之外,也有其他的管理工具,包含Docker自家推出的Docker Swarm,以及Apache的Mesos。

raw-image

Kubernetes的四種組成元件

Kubernetes需要知道的四個基本的原件:Cluster 、Master Node、Worker Node、Pod

raw-image
  • Cluster
    叢集(Cluster)是大家較為熟悉的概念,一個叢集裡可以包含很多的節點(Nodes),例如你可以將三台伺服器組成一個叢集,在叢集裡可以做到資源共享、負載平衡與高可用性等等。


  • Master Node
    Master Node就像疫情指揮中心一樣,是一個負責發號施令與管理其他Worker Node的角色。


  • Worker Node
    Worker Node就像底下的執行單位一樣,負責處理各種大小事。


  • Pod
    Kubernetes最小運作單位,被包含在Worker Node之中,一個Pod對應一個應用服務,而Pod裡面包含一個或多個容器,這些容器共享資源與網路,並彼此透過localhost的Port進行溝通,由於Pod的資源有限,所以通常建議一個Pod只存在一個容器。
    每一個Pod都會有一個yaml設定檔,類似於身分證的概念,設定檔裡包含要部署在這個Pod的容器資訊。
留言
avatar-img
留言分享你的想法!
avatar-img
David | 資訊科技小學堂的沙龍
15會員
11內容數
分享關於我在資訊科技領域學習與成長的心得
2022/10/07
這篇分享希望能讓你了解 Microsoft Azure Associate(AZ-104)考試時間、題數與 形式,希望可以給予正在準備的你一些幫助 本篇會從三個面向來分享: 1. 考試範圍與流程 2. 我是如何自學與準備 3. 給正在準備的你一些建議
Thumbnail
2022/10/07
這篇分享希望能讓你了解 Microsoft Azure Associate(AZ-104)考試時間、題數與 形式,希望可以給予正在準備的你一些幫助 本篇會從三個面向來分享: 1. 考試範圍與流程 2. 我是如何自學與準備 3. 給正在準備的你一些建議
Thumbnail
2022/08/26
這篇分享希望能讓你了解 為何備份在企業中總是被稱為最後一道防線,而目前常見的備份方式又有哪些 本篇分享內容包含以下 1.為何需要備份 2.企業常見的幾種備份作法 3.備份作法比較 4.其他補充資訊
Thumbnail
2022/08/26
這篇分享希望能讓你了解 為何備份在企業中總是被稱為最後一道防線,而目前常見的備份方式又有哪些 本篇分享內容包含以下 1.為何需要備份 2.企業常見的幾種備份作法 3.備份作法比較 4.其他補充資訊
Thumbnail
2022/08/19
這篇分享希望能讓你了解 VMware 針對K8S應用所推出的新世代管理平台,如何解決維運與開發團隊在虛擬化和容器 環境中所面臨的挑戰與困境 本篇分享內容包含以下 1.前言 2.Tanzu介紹
Thumbnail
2022/08/19
這篇分享希望能讓你了解 VMware 針對K8S應用所推出的新世代管理平台,如何解決維運與開發團隊在虛擬化和容器 環境中所面臨的挑戰與困境 本篇分享內容包含以下 1.前言 2.Tanzu介紹
Thumbnail
看更多
你可能也想看
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
本文介紹了 Docker 的基礎概念,以及在軟體工程環境中的運用。藉由 Docker 的容器化技術和映像檔技術,能夠實現開發和生產環境的一致性,並且支持負載平衡和無縫更新。此外,也提到了 Kubernetes 和 Docker Swarm 這兩個重要工具的用途和適用對象。
Thumbnail
本文介紹了 Docker 的基礎概念,以及在軟體工程環境中的運用。藉由 Docker 的容器化技術和映像檔技術,能夠實現開發和生產環境的一致性,並且支持負載平衡和無縫更新。此外,也提到了 Kubernetes 和 Docker Swarm 這兩個重要工具的用途和適用對象。
Thumbnail
講到Docker之前就必須先談談容器化, 容器化是一種軟體開發的方法, 將程式、依賴及組態封裝在映像檔之中, 那映像檔對於大部份的人來說一定非常的熟悉, 尤其是VM這個詞, 虛擬化技術的先行者, 有了這項技術之後, 我們就可以減少一些因為環境產生的問題導致難以排查程式錯誤的狀況, 甚至可以避免因為A
Thumbnail
講到Docker之前就必須先談談容器化, 容器化是一種軟體開發的方法, 將程式、依賴及組態封裝在映像檔之中, 那映像檔對於大部份的人來說一定非常的熟悉, 尤其是VM這個詞, 虛擬化技術的先行者, 有了這項技術之後, 我們就可以減少一些因為環境產生的問題導致難以排查程式錯誤的狀況, 甚至可以避免因為A
Thumbnail
上篇我們在安裝 VirtualBox 練習使用虛擬化切割出獨立空間做開發,那除了使用 VM 達到虛擬化外,另一個輕量級的虛擬化技術 - 容器化。 要使用容器,那就不能不認識 Docker
Thumbnail
上篇我們在安裝 VirtualBox 練習使用虛擬化切割出獨立空間做開發,那除了使用 VM 達到虛擬化外,另一個輕量級的虛擬化技術 - 容器化。 要使用容器,那就不能不認識 Docker
Thumbnail
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少因
Thumbnail
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少因
Thumbnail
這篇分享希望能讓你了解 什麼Container、與Kubernetes和Docker是什麼關係,以及Kubernetes中又包含了哪些 組件?
Thumbnail
這篇分享希望能讓你了解 什麼Container、與Kubernetes和Docker是什麼關係,以及Kubernetes中又包含了哪些 組件?
Thumbnail
Kubernetes是什麼? 1. Kubernetes是Google嚴格保密十幾年的秘密武器——Borg的一個開放原始碼版本。 2. Kubernetes是一個開放的開發平台。 3. Kubernetes是一個完備的分散式系統支撐平台。
Thumbnail
Kubernetes是什麼? 1. Kubernetes是Google嚴格保密十幾年的秘密武器——Borg的一個開放原始碼版本。 2. Kubernetes是一個開放的開發平台。 3. Kubernetes是一個完備的分散式系統支撐平台。
Thumbnail
圖片來自 Shine With Sapphire (本文譯自〈Docker for PHP Developers〉) Docker 和 Vagarant 有什麼不同? 如果在每個專案同時運行多個容器(container)的情況下 Docker 比 Vagrant 好在哪裡?會比用 Vagrant 同
Thumbnail
圖片來自 Shine With Sapphire (本文譯自〈Docker for PHP Developers〉) Docker 和 Vagarant 有什麼不同? 如果在每個專案同時運行多個容器(container)的情況下 Docker 比 Vagrant 好在哪裡?會比用 Vagrant 同
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News