iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
Software Development

Way to Golang & Kubernetes 系列 第 3

[Day 3.] Container Orchestration

  • 分享至 

  • xImage
  •  

Kubernetes is arguably one of the best and most popular container orchestration.

要了解Kubernetes,就必須明白 "何謂 container" 以及 "何為 orchestration"。
昨天介紹了 Kubernetes cluster 架構,今天將談論到 container 的概念,並引導出後續的主角,也就是 Kubernetes 中最小的運作單位 - Pod。

Container

在早期年代,Virtual Machine 及 Container 的概念尚未出現之前,要將應用程式部署到 Server 上,通常會遇到的難題是: 不同應用程序之間,資源分配調度的問題,可能某應用程序佔據了大量資源,從而導致其餘應用程序效能不佳。而通常解決此難題的方式是,採購更多的 Servers 以支持應用程式,但這終究不是治本的方法。

隨後衍生到Virtual Machine (VM)的誕生,透過 VM 共用底層硬體資源,且保有每一台 VM 擁有自己的作業系統 (OS),用來達到隔離的效果,同時顯著地降低開發成本。

再到後來,容器概念的出現,也凸顯出 VM 的弱點: 因存在多個 OS 及kernel,導致底層資源開銷大,致使啟動速度慢很多,相比之下,container 輕量級、啟動速度快,且對資源利用度亦較高。

https://ithelp.ithome.com.tw/upload/images/20230918/20163282IhYwYkPh7o.jpg


那到底何謂 Container?

可以將 Container 理解為"完全隔離的環境",與VM相似,不同的是它們"共享 underlying kernel",也就是說它們不須自己擁有一套完整的 OS,反之,在每個 container 中,只要各自保有該 OS 特有的 software 即可。

補充說明:
OS 是由 underlying Kernel (負責與底層硬體溝通) 和 其上的 software (包含driver、file manager...等) 所組成的。

舉個例子來理解:
在 Ubuntu 上使用 Docker,則可以創建像是 Debian、Suse、CentOS 等基於 Linux kernel 的容器,但無法在其上創建使用 Windows OS 的容器。
其實這也是 VM 相比 container 具有的優勢所在,在 VM 上因每一個虛擬機都擁有自己的 OS (包含 kernel),故亦可以在 Linux-based 的作業系統上使用 Windows Virtual Machine。

https://ithelp.ithome.com.tw/upload/images/20230921/20163282qCcpQXc6Ie.jpg

到這裡大致上理解了 container的概念,再來介紹容器編排 (Container Orchestration)


Container Orchestration

以簡單例子來做說明:
當應用程式的流量大增時,需要 scale up 以因應,反之當負載減少時需要 scale down; 又或者考慮另一情境,當現在應用程式需要進行版本更新,如何在不停機之下完成所有更新? 以上就是容器編排調度。

現今 Container Orchestration 不限於 Kubernetes,像是 Docker 有自己的 Docker swarm,還有 Apache Mesos 亦是容器編排技術。


Pod

回憶一下昨天介紹的 Kubernetes cluster ,由 Master 與 Worker Nodes 所組成。
其中在 Worker Node 中,Kubernetes 運作的最小單位是 Pod,通常一個 Pod 會對應到一個 Container,也就是一個 Application,但也有少部分是 Multi-Container Pods,這邊後續會更詳細說明。

https://ithelp.ithome.com.tw/upload/images/20230921/20163282pQCcV6qqkE.jpg


關於 Docker 實際操作細節,可參考 Docker 基礎教學與介紹 101Docker-tutorial


比昨天早了 嗎?
:)

Life is not always good, life is always not rosy, but life is worth living when you find purpose.
共勉之


上一篇
[Day 2.] Kubernetes Components
下一篇
[Day 4]. Pod
系列文
Way to Golang & Kubernetes 11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言