iT邦幫忙

0

筆記:Kubernetes (K8s) 學習筆記

  • 分享至 

  • xImage
  •  

筆記:Kubernetes (K8s) 學習筆記

這二天玩了一下 minikube,把所理解的一些概念記錄一下~


整體的設計結構(請 AI 畫的精美圖片~)
https://ithelp.ithome.com.tw/upload/images/20260422/201445089ORcQSijr7.png


Cluster 最外層的大框框

當開始執行 K8s 的時候,一個 cluster 就算是誕生了。它就是像是一個大框框,接下來所有 k8s 所需要的資源都會被放在這個 cluster 裡面。在 cluster 裡面,基本上可以簡單的二分法成 主節點(master node) & 從節點(worker node)

主節點(Master Node)

可以理解成是 K8s 的大腦,負責接受指令、監控跟管理 worker node。但它自己本身並不會去執行業務程式(例:實際在跑的網站或程式),實際在工作的是 worker node。

在 master node 裡,有幾個重要的元件:

  • API Server:cluster 唯一的溝通入口點,任何要控制 cluster 的指令,第一關都是要先到它這邊。
  • Controller Manager:會負責監控 worker node or pod 是否都還活得好好的。如果有發現壞掉的 pod,會自動建立新的 pod,讓 pod 的數量維持在設定的數量。(pod 傻瓜版定義:裡面可以放一個或多個 container,但通常就是放 1 個 container)
  • Scheduler:負責派工的角色,它有自己的演算規則,像根據資源情況 or 特殊限制之類的,來決定新的 pod 會被放到哪個 worker node 執行。
  • State Store(etcd)):本身是一個 key-value 的資料庫,裡面儲存了整個 cluster 的狀態資料。例:有哪些 node、pod、deployment、service 等等。

從節點 (Worker Node)

實際在工作地方,像是開發的程式或服務都是放在這裡面來執行。

  • Kubelet
    1.會持續的監控 master node=> api server,如果發現有 pod 被分配到自己的這個 worker node 時,就會通知 container runtime 把 pod 建立起來。
    2.不斷的監控本身 node & pod 的狀態,如果發現有異常時,就會回報給 master node->api server。
    3.這個元件是一個作業系統上的 daemon 程式,不是以 k8s 裡的一個 pod 在運作。所以作業系統重啟時,k8s 都還沒啟動前,kubelet 就會先啟動了。像其他的元件,如果下 minikube kubectl -- get pods 指令,其實是能看到都是以 pod 的方式在運作。而 systemctl status kubelet 就能看到 kubelet 在作業系統上執行的狀況。
  • Kube-proxy:負責網路的處理,因為跑起來的 container 是無法直接通到外面的。
  • Container Runtime:真正在執行 container 的元件,像是 pull image、start or stop等。

Pod:K8s 的最小單位

在 K8s 裡,最小單位是 pod。而一個 Pod 裡面可以包含「一個或多個」 container。但雖然可以有多個 container,對 k8s 來說他還是只認識 pod,再底下的 container 它就不曉得了。

在實務上,一個 pod 裡面通常就只會放一個 container。好處是資源分配簡單,職責也較能切開。但 survey 的過程中有看到一個 sidecar 模式,像是把 log 蒐集後打出去、動態更新參數設定等,也就是這個第二個 container 是一種輔助的概念,跑得不是主程式。


Deployment 部署計畫

看到最白話的解釋就是 deployment 的計畫書……。基本上就是告訴 k8s 要執行哪個 image,然後需要有幾個 pod,k8s 就會自動幫你維持這個數量。假設 pod 有遇到問題時,k8s 參考的依據就是這份 deployment。如果壞掉一個,那 k8s 就會自動建立一個新的 pod 來補上。

另外像 rolling deployment 也可以透過這份 deployment 計畫書來完成,只要把新版本的 image 做好,然後更新 deployment 的定義,k8s 就會自動的一個一個 pod 來進行 rolling 更新。

https://ithelp.ithome.com.tw/upload/images/20260422/20144508tjevzaHqYp.png
https://ithelp.ithome.com.tw/upload/images/20260422/20144508Dg4zDZuyxP.png


Service 服務

k8s 裡面可能會住了一堆 pod,而這些 pod 也可能都住在不同的 worker node,預設外部是都沒有辦法直接溝通,中間會需要透過 service 來進行溝通。所以從外面進來的請假求,第一關都是先到 service,然後 service 再把請求轉發給 pod。


心得

自己照著書本在亂玩 minikube 的時候,的確有看到一種俄羅斯娃娃的概念。也就是在我的 EC2 主機上,會看到 minikube 的 container,然後這個 container 裡面,又再是 minikube 的各個元件的 container 在執行,的確是蠻特別的。不得不讚嘆一下 k8s 的架構的確是蠻多巧思的。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言