iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0

此篇如果有錯誤或者指教請留言

Please leave a command if there is anything wrong in this article

這邊主要是我歸納的一些心得,但是不確定是否完全正確,有興趣的話可以互相討論。歡迎指正


首先對於計算機的部分 Multiple thread, Multiple Processing 這幾個名詞以前比較常聽,然後近幾年也出現 Concurrency 的部分大家熱烈討論,但是對於平行運算而言,其實也很多地方讓人搞混。但是這篇主要的是探討 Multiple Pods 的特性,而我這邊會在末尾介紹。

至於 Pods 是什麼,則是 k8s 裡面的一個 component ,這個是在k8s 最小的計算用的單元,也是大家耳熟能詳的 Container ,但是為什麼不用 Docker container 就好呢,這就是 K8s 神奇的地方
不過K8s 真的博大精深,這篇只對有需要的跟會使用的部分講解。

Multiple Thread

這個簡單來講就是在 cpu 單核心的時代,因為為了要增加 CPU 計算的效率,所以會把工作切成好幾個階段,而最主要的是在不同的工作中間切換,讓人類感覺好像是同時間處理的樣子,但實際上處理的都只有單顆核心而已。而這個做法成功對改變人類使用電腦的習慣。例如 使用瀏覽器背景播放 youtube ,然後同時開 facebook 瀏覽網頁。這中間並沒有程序在切換的感覺,這就是 Multiple Thread 的概念。示意圖如下:

但最主要的是他可以共享記憶體,所以對 IO 很有幫助。
https://ithelp.ithome.com.tw/upload/images/20230909/20151483IGf87rRlbZ.png

Figure 1: Multiple Thread

Multiple Processor

接下來演變到多核的世界,還記得 PID 嗎? PID就是 processor ID 的意思,簡單來講就是一台電腦可以同時間有多個 Processor 在執行,然後就在搭上 Multi-processing and Multi-thread 的方式可以快處理很多大量的資料,但是這裡問題就來了,這邊的話就是記憶體沒辦法跟其他核心共享,甚至沒辦法調配,只要每個一個 Processor 碰到 OOM 的議題,就會大家一起跳 Error 結束這回合。

所以在使用 Multi processing 的時候都要稍微考量記憶體的使用量,在平行的世界最糟剛的情況會不會把這個系統弄當掉,然後會搞到整個Operation system 掛掉

https://ithelp.ithome.com.tw/upload/images/20230909/20151483g5kfHDYsqg.png
Figure 2 : Multiple Processor

Concurrency

接下來還有一個近幾年特別火的概念就是 Concurrency ,主要是因為近幾年前後端的盛行,所以有些任務需要等一陣子才會觸發下一階段的事情。因此把等待的事情就先讓他擱置著,不然整個系統都在等這個拖油瓶把事情做完,因此會讓系統卡住都在等待,但是這個其實跟上面的兩個的結合。

https://ithelp.ithome.com.tw/upload/images/20230909/201514834gRkcStX0N.png

Figure 4 : Concurrency

What is OOM?

OOM 英文的完整名稱叫做 Out Of Memory,相信大家在資料處理的時候常常會遇到的問題,所以一當資料處理變成不同的 Processor 的時候,當記憶體發生 OOM ,那接下來所有的 Processor 也發生 OOM ,因為 processor 共同搶一個記憶體大餅,就像下圖所呈現的
https://ithelp.ithome.com.tw/upload/images/20230909/20151483A5BnqpgaLg.png

Figure 4 : Shared Memory is insufficient

K8s Pod

這邊就是 K8s Pods 的概念,Node 就是一個EC2 ,上面可以跑很多個 Container ,為了省錢的精神,所以一個 node 上面會執行很多個 Pods, 而Volumes就是所謂的網路空間,而這些 component 的部分都是透過 Kubelet 這個 sidecar 的程式在管理跟調配,所以這就是 k8s 厲害的地方
https://ithelp.ithome.com.tw/upload/images/20230909/201514838LNd6B0mmJ.png

Figure 5: K8s Node

Evicted pods

另外介紹完 pods 之後,為什麼我們要特地介紹 pods ,當然也是跟發生OOM 有相關,如下圖所示,當發生 OOM的時候,就會先把 Priority 比較低的 Pod 砍掉移到別的Node 上面去運行,而這樣就不會像 Multiple processor 一樣同時間遇到OOM所以中斷遇到OOM的processor ,這樣快執行或執行到一半就中斷的城市會很慘烈。

因此對於 priority 的設置可以至少確保node 上面的所有支援都是給個人或團隊單純使用,畢業外來的奇怪 Pods 如果自算支援吃很的狀況下,也不會影響原本的服務的進行
https://ithelp.ithome.com.tw/upload/images/20230909/20151483EPFBxsnRI0.png

Figure 6: Evicted pods workflow

Reference


上一篇
{Day 5: EKS - Kubernetes on AWS }
下一篇
{Day 7 : What is EKS-blueprint}
系列文
Don't be a Machine Learning Engineer30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言