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

閱讀時間約 1 分鐘
這篇分享希望能讓你了解
什麼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與微服務應用的開發上。
Resource by XETNET
在虛擬架構中,為了增加硬體資源的利用率,在硬體層上建立一層虛擬化平台,並於平台中建立與運行多個虛擬機器(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的負擔,在啟動時間上就可以更加快速。
Container v.s Virtual Machines
但早在1982年就出現的容器化技術,為何在近十年才開始受到企業關注呢?原因在於早期容器化做法的門檻較高,且並無統一標準,直到2013年dotCloud這家公司釋出一套可將容器標準化的平台Docker,並受到各大科技巨頭的支持後,使Docker成為目前主流的容器標準。

淺談Container / Docker / Kubernetes 三者關係

在剛開始接觸容器化時,常看到有人講Container、有人講Docker,容易被專有名詞搞混,到底兩者有什麼差別? 而Kubernetes又是什麼,要如何理解這三個之間的關係,今天就來跟大家說明一下。
Container
容器化(Containerization)是一種連同硬體作業系統與運行服務做虛擬化的技術,讓運作在平台上的容器(Container)共享一個Host OS的資源,而容器是容器化技術具體化的一個實例(Instance),就像虛擬化技術所實踐出來的實例稱做為虛擬機一樣。
容器化側重在應用程式的開發、攜帶,封裝應用程式的相依資源與運行環境,強調輕量、快速與彈性;虛擬化則側重於硬體設備的整併與資源運用,強調資源利用率與高可用性。
Resource by LIKSI
雖然容器化虛擬化在運作邏輯和側重重心完全不同,但我們還是可以藉由虛擬化的概念來理解容器化中的各個角色。
Docker
Docker是由dotCloud所發佈的一個容器標準化的開源平台,並以Docker為名成立新公司推廣,如同虛擬化需要有虛擬層一樣,在Hypervisor上運作虛擬機器,容器化也需要有一個平台可以運行容器與資源分配,稱為Docker Engine。
Docker可以將應用程式與其相依資源封裝成Docker映像檔,使其可被重複利用或移植於其他環境,同時提供Dockerfile記錄建立容器的每一步驟,只要有Docker Engine,就可以將Docker映像檔或Dockerfile轉換成容器。
Resource by velog
Kubernetes
Kubernetes是一個可以自動化部署與管理容器的工具,是由Google設計並開源系統。就像你可以透過VMware vCenter去部署與管理虛擬機器一樣,可以藉由Kubernetes達到大量容器的部署與調動,目前市面上包含SUSE的Rancher、Red Hat的OpenShift,以及VMware的Tanzu都是依循Kubernetes所開發出來的容器管理產品,而除了Kubernetes之外,也有其他的管理工具,包含Docker自家推出的Docker Swarm,以及Apache的Mesos。
Resource by HIVEMQ

Kubernetes的四種組成元件

Kubernetes需要知道的四個基本的原件:Cluster 、Master Node、Worker Node、Pod
Resource by tkssharma.com
  • 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的容器資訊。
此篇文章會顯示動態置底廣告
為什麼會看到廣告
分享關於我在資訊科技領域學習與成長的心得
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
這篇分享希望能讓你了解 HPE的dHCI的功能特色與適合使用情境 本篇會從三個面向來分享: 1.HPE dHCI小檔案 2.適合對象 3.產品特色
這篇分享希望能讓你了解 什麼是「顧問式銷售」?提高銷售成功機率的關鍵為何?內向人也可以成為Top Sales的關鍵 本篇會從幾個議題來分享: 1.顧問式銷售 v.s 傳統銷售 2.SPIN + FAB 3.說故事的藝術 4.建立屬於自己的銷售流程
這篇分享希望能讓你了解 HPE InfoSight雲端智能管理平台如何幫助IT人員的日常維運,而其中背後運作的機制 又是為何?是否會偷偷將企業隱私資料上傳上去呢?
這篇分享希望能讓你了解 HPE的超融合產品SimpliVity的功能特色與適合使用情境 本篇會從三個面向來分享: 1.SimpliVity小檔案 2.適合對象 3.產品特色
這篇分享希望能讓你了解 目前企業在資訊基礎設施上有哪些常用架構,彼此之間又有甚麼樣的差異, 而企業又要如何選擇出適合自己的架構呢? 本篇會分享三種主流架構: 1.三層式架構 2.超融合架構 3.非聚合式超融合架構 4.總結
這篇分享希望能讓你了解 一個朝九晚九、工作與雲端甚少相關的普通上班族,如何在40小時內自學考取Microsoft Azure Fundamentals(AZ-900),若你和我一樣,這篇心得或許能夠幫助你少走一點冤枉 路~ 本篇會從四個面向來分享: 1. 為何需要考取AZ-900 2. 考試範圍與
這篇分享希望能讓你了解 HPE的dHCI的功能特色與適合使用情境 本篇會從三個面向來分享: 1.HPE dHCI小檔案 2.適合對象 3.產品特色
這篇分享希望能讓你了解 什麼是「顧問式銷售」?提高銷售成功機率的關鍵為何?內向人也可以成為Top Sales的關鍵 本篇會從幾個議題來分享: 1.顧問式銷售 v.s 傳統銷售 2.SPIN + FAB 3.說故事的藝術 4.建立屬於自己的銷售流程
這篇分享希望能讓你了解 HPE InfoSight雲端智能管理平台如何幫助IT人員的日常維運,而其中背後運作的機制 又是為何?是否會偷偷將企業隱私資料上傳上去呢?
這篇分享希望能讓你了解 HPE的超融合產品SimpliVity的功能特色與適合使用情境 本篇會從三個面向來分享: 1.SimpliVity小檔案 2.適合對象 3.產品特色
這篇分享希望能讓你了解 目前企業在資訊基礎設施上有哪些常用架構,彼此之間又有甚麼樣的差異, 而企業又要如何選擇出適合自己的架構呢? 本篇會分享三種主流架構: 1.三層式架構 2.超融合架構 3.非聚合式超融合架構 4.總結
這篇分享希望能讓你了解 一個朝九晚九、工作與雲端甚少相關的普通上班族,如何在40小時內自學考取Microsoft Azure Fundamentals(AZ-900),若你和我一樣,這篇心得或許能夠幫助你少走一點冤枉 路~ 本篇會從四個面向來分享: 1. 為何需要考取AZ-900 2. 考試範圍與
你可能也想看
Google News 追蹤
Thumbnail
本文介紹了 Docker 的基本概念,包括 Docker Image、Docker Container、Dockerfile、Docker Compose 及其應用情境,如開發與測試環境、微服務架構和持續整合/持續部署。瞭解這些內容能幫助開發人員更有效地利用 Docker 進行應用程式的部署和管理。
Thumbnail
在現代 DevOps 和雲端部署中,Docker 和 Kubernetes 常用於簡化應用程式的部署與管理,尤其在 數據合作(Data Collaboration) 的場景中。以下是兩者的基本比較以及在廣告商和出版商數據合作中的應用範例。 ▋Docker:容器化平台 Docker 是一個
Thumbnail
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
本文介紹了 Docker 的基礎概念,以及在軟體工程環境中的運用。藉由 Docker 的容器化技術和映像檔技術,能夠實現開發和生產環境的一致性,並且支持負載平衡和無縫更新。此外,也提到了 Kubernetes 和 Docker Swarm 這兩個重要工具的用途和適用對象。
Docker是一種容器化技術,可以將應用程式及相關依賴項目打包到一個容器中。這篇文章介紹了安裝Docker的步驟,以及幾個比較偏向使用者的應用程式。
默默覺得,要解釋 docker 與 VM 在執行方式上的差異,可以用水族箱來說明。
Thumbnail
引言 在當今的技術世界中,Kubernetes 已成為容器化應用的領導平台。作為一個高效的容器編排系統,它不僅管理著容器的部署和擴展,還提供了必要的自動化支持,以保證應用的高可用性和性能。在這個框架中,自動擴展功能起著至關重要的作用,特別是在面對不斷變化的負載和需求時。
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇
Thumbnail
本文介紹了 Docker 的基本概念,包括 Docker Image、Docker Container、Dockerfile、Docker Compose 及其應用情境,如開發與測試環境、微服務架構和持續整合/持續部署。瞭解這些內容能幫助開發人員更有效地利用 Docker 進行應用程式的部署和管理。
Thumbnail
在現代 DevOps 和雲端部署中,Docker 和 Kubernetes 常用於簡化應用程式的部署與管理,尤其在 數據合作(Data Collaboration) 的場景中。以下是兩者的基本比較以及在廣告商和出版商數據合作中的應用範例。 ▋Docker:容器化平台 Docker 是一個
Thumbnail
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
本文介紹了 Docker 的基礎概念,以及在軟體工程環境中的運用。藉由 Docker 的容器化技術和映像檔技術,能夠實現開發和生產環境的一致性,並且支持負載平衡和無縫更新。此外,也提到了 Kubernetes 和 Docker Swarm 這兩個重要工具的用途和適用對象。
Docker是一種容器化技術,可以將應用程式及相關依賴項目打包到一個容器中。這篇文章介紹了安裝Docker的步驟,以及幾個比較偏向使用者的應用程式。
默默覺得,要解釋 docker 與 VM 在執行方式上的差異,可以用水族箱來說明。
Thumbnail
引言 在當今的技術世界中,Kubernetes 已成為容器化應用的領導平台。作為一個高效的容器編排系統,它不僅管理著容器的部署和擴展,還提供了必要的自動化支持,以保證應用的高可用性和性能。在這個框架中,自動擴展功能起著至關重要的作用,特別是在面對不斷變化的負載和需求時。
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇